docs community blog github
Edit

Paketo Buildpacks で Web Server をビルドする

このドキュメントでは Paketo Buildpack を使用して HTTPD や NGINX で実行するアプリケーションのコンテナイメージを作成する方法を説明します。 一般的な手順を説明しているだけなので、Buildpack の振る舞いや設定方法を詳しく知りたいときは、それぞれの Web Server 用 Buildpack のリファレンスを参照してください。

HTTPD

This documentation explains how to use the Paketo HTTPD Buildpack to build applications for several common use-cases. For more in-depth description of the buildpack’s behavior and configuration see the Paketo HTTPD Buildpack Reference documentation.

サンプルアプリをビルドする

pack コマンドを使うと、Apache HTTP Server Cloud Native Buildpack で次のようにサンプルアプリケーションをビルドできます。

git clone https://github.com/paketo-buildpacks/samples
cd samples/httpd
pack build my-app --buildpack gcr.io/paketo-buildpacks/httpd \
  --builder paketobuildpacks/builder:full
copy to clipboard
Copied!

アプリケーションの実行方法は ソースコードリポジトリの README を参照してください。

注意:Apache HTTP Server Cloud Native Buildpack は Paketo Full ビルダーが必要です。Full ビルダーにしか含まれないOSのシステムライブラリを使用するからです。

インストールするバージョンを指定する

Apache HTTPD Server Cloud Native Buildpack では、デプロイする Apache HTTP Server のバージョンを環境変数 BP_HTTPD_VERSION で指定できます。 Apache HTTPD Server Cloud Native Buildpack で使用できるバージョンは、 Apache HTTPD Server Cloud Native Buildpack のリリースノート で確認できます。

httpd のバージョンは明示的に指定しなくても構いません。 その場合、Apache HTTPD Server Cloud Native Buildpack のリリースノートに記述された既定のバージョンを使用します。

環境変数 BP_HTTPD_VERSION を使用する

アプリケーションを HTTPD v2.4.46 でデプロイするときは、ビルド時に環境変数 BP_HTTPD_VERSION を指定します。 pack コマンドの --env フラグでも指定できますし、 project.toml でも指定できます。

BP_HTTPD_VERSION="2.4.46"
copy to clipboard
Copied!

非推奨:buildpack.yml で指定する

Apache HTTP Server Buildpack の v1.0.0 から、buildpack.yml でバージョンを指定するのは非推奨になりました。 環境変数 $BP_HTTPD_VERSION を使用してください。

コンテナイメージを実行するときに HTTPD Server を起動する

アプリケーションのソースコードに httpd.conf を含めるようにします。 Apache HTTPD Server Cloud Native Buildpack は、Apache HTTPD Server の実行可能ファイルをインストールするだけでなく、コンテナイメージを実行するときに起動できるように構成します。

NGINX

This documentation explains how to use the Paketo NGINX Buildpack to build applications for several common use-cases. For more in-depth description of the buildpack’s behavior and configuration see the Paketo NGINX Buildpack Reference documentation.

サンプルアプリをビルドする

pack コマンドを使うと、NGINX Server Cloud Native Buildpack で次のようにサンプルアプリケーションをビルドできます。

git clone https://github.com/paketo-buildpacks/samples
cd samples/nginx
pack build my-app --buildpack gcr.io/paketo-buildpacks/nginx \
  --builder paketobuildpacks/builder:base
copy to clipboard
Copied!

アプリケーションの実行方法は ソースコードリポジトリの README を参照してください。

注意:この例では Paketo Base ビルダーを使っていますが、NGINX Server Cloud Native Buildpack は Paketo Full ビルダーと互換性があります

インストールするバージョンを指定する

NGINX Server Cloud Native Buildpack では、デプロイする NGINX のバージョンを変更できます。 NGINX Server Cloud Native Buildpack で使用できるバージョンは、 Apache HTTPD Server Cloud Native Buildpack のリリースノート で確認できます。

nginx のバージョンは明示的に指定しなくても構いません。 その場合、NGINX Server Cloud Native Buildpack のリリースノートに記述された既定のバージョンを使用します。

環境変数 BP_NGINX_VERSION を使用する

アプリケーションを NGINX v1.19.8 でデプロイするときは、ビルド時に環境変数 BP_NGINX_VERSION を指定します。 pack コマンドの --env フラグでも指定できますし、 project.toml でも指定できます。

BP_NGINX_VERSION="1.19.8"
copy to clipboard
Copied!

非推奨:buildpack.yml で指定する

NGINX Server Buildpack の v1.0.0 から、buildpack.yml でバージョンを指定するのは非推奨になりました。 環境変数 $BP_NGINX_VERSION を使用してください。

コンテナイメージを実行するときに NGINX Server を起動する

アプリケーションのソースコードに nginx.conf を含めるようにします。 NGINX Server Cloud Native Buildpack は、NGINX の実行可能ファイルをインストールするだけでなく、コンテナイメージを実行するときに起動できるように構成します。

NGINX Server の設定値を起動時に構成する

NGINX Server Cloud Native Buildpack ではテンプレート形式の設定ファイルに対応しています。 nginx.conf の中で、{{port}}{{env "FOO"}}{{module "ngx_stream_module}} のように、起動時に決定できる値を変数として記述できます。

具体的な使い方は サンプルアプリケーション を参照してください。

ポート番号

設定ファイルに {{port}} と記述すると、Buildpack で作成したコンテナイメージを実行するとき、環境変数 $PORT を読み取った値に展開します。 サーバーがリクエストを待ち受けするポート番号を動的に指定する方法として利用できます。

具体的には次のように記述できます。

server {
  listen {{port}};
}
copy to clipboard
Copied!

コンテナイメージを実行するときに環境変数で PORT を指定するときは次のようにします。

docker run --tty --env PORT=8080 --publish 8080:8080 my-nginx-image
copy to clipboard
Copied!

環境変数

{{port}} は分かりやすい例でした。 プロセスの起動時に指定された環境変数を参照するときは {{env "FOOVAR"}} のように記述します。

レスポンスの GZIP 圧縮機能を環境変数 GZIP_DOWNLOADS で切り替えられるようにするには、次のように記述します。

gzip {{env "GZIP_DOWNLOADS"}};
copy to clipboard
Copied!

コンテナイメージを実行するときに環境変数で GZIP_DOWNLOADS を指定するときは次のようにします。

docker run --tty --env PORT=8080 --env GZIP_DOWNLOADS=off --publish 8080:8080 my-nginx-image
copy to clipboard
Copied!

NGINX Server の動的モジュールを起動時に構成する

load_module に指定する動的モジュールのパスも、テンプレート変数で指定できます。

アプリケーションディレクトリに modules/ngx_foo_module.so というモジュールがあるときは、nginx.conf を次のように記述します。

{{module "ngx_foo_module"}}
copy to clipboard
Copied!

Buildpack が準備した ngx_stream_module というモジュールがあるときは、nginx.conf を次のように記述します。

{{module "ngx_stream_module"}}
copy to clipboard
Copied!

nginx.conf の詳しい内容については NGINX のドキュメント を参照してください。

Edit

Last modified: September 10, 2021