コンテナ イメージのビルド中に設定される環境変数を構成できます。
ビルドイメージと実行イメージを拡張して、コンテナ イメージをカスタマイズすることもできます。
ローカルビルド
ローカルビルドの場合、Pack CLI と Docker がインストールされている必要があります。
始める前に
- Docker Community Edition(CE)をワークステーションにインストールします。
pack
は Docker を OCI イメージ ビルダーとして使用します。 - Pack CLI をインストールします。
- GitHub からサンプル アプリケーションを取得するために Git ソース管理ツールをインストールします。
環境変数を設定する
ローカルビルドの環境変数を設定するには、各環境変数の pack
コマンドに --env
フラグを追加します。
ランタイムでサポートされている環境変数を 1 つ以上使用できます。
pack build SERVICE_NAME \
--env ENVIRONMENT_VARIABLE
次のように置き換えます。
SERVICE_NAME
は、アプリケーションまたは関数のサービスの名前に置き換えます。ENVIRONMENT_VARIABLE
は、ビルド時に設定する環境変数に置き換えます。
- 例
コンテナ イメージで
GOOGLE_ENTRYPOINT="gunicorn -p :8080 main:app"
環境変数を設定するには、次のコマンドを実行します。pack build my-app \ --builder gcr.io/buildpacks/builder:v1 \ --env GOOGLE_ENTRYPOINT="gunicorn -p :8080 main:app" --env MY-LOCAL-ENV-VARIABLE
リモートビルド
リモートビルドの環境変数を設定するには、project.toml
プロジェクト記述子を使用します。project.toml
プロジェクト記述子は、コンテナ イメージのビルド時に Cloud Build によって使用されます。
始める前に
-
Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。
-
Cloud Build and Artifact Registry API を有効にします。
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Google Cloud プロジェクトがコンテナ イメージ リポジトリにアクセスできることを確認します。
Artifact Registry の Docker リポジトリへのアクセスを構成するには:
- Google Cloud プロジェクトの同じロケーションに Docker リポジトリを新規作成します。
gcloud artifacts repositories create REPO_NAME \ --repository-format=docker \ --location=REGION --description="DESCRIPTION"
次のように置き換えます。REPO_NAME
は、Docker リポジトリに選択した名前に置き換えます。REGION
は、Google Cloud プロジェクトのロケーションに、またはそれに最も近いロケーションに置き換えます。DESCRIPTION
は選択した説明に置き換えます。
たとえば、「Docker repository」という説明を使用して
us-west2
にdocker
リポジトリを作成するには、次のコマンドを実行します。gcloud artifacts repositories create buildpacks-docker-repo --repository-format=docker \ --location=us-west2 --description="Docker repository"
- リポジトリが作成されたことを確認します。
gcloud artifacts repositories list
Docker リポジトリに選択した名前がリストに表示されます。
- Google Cloud プロジェクトの同じロケーションに Docker リポジトリを新規作成します。
省略可: サンプル アプリケーションをダウンロードする
- ローカルマシンにサンプル リポジトリのクローンを作成します。
git clone https://github.com/GoogleCloudPlatform/buildpack-samples.git
- アプリケーションのサンプルコードが含まれているディレクトリに移動します。
Go
cd buildpack-samples/sample-go
Java
cd buildpack-samples/sample-java-gradle
Node.js
cd buildpack-samples/sample-node
PHP
cd buildpack-samples/sample-php
Python
cd buildpack-samples/sample-python
Ruby
cd buildpack-samples/sample-ruby
.NET
cd buildpack-samples/sample-dotnet
環境変数を使用してアプリケーションをビルドする
- サービスのルート ディレクトリで
project.toml
プロジェクト記述子を作成または更新して、[[build.env]]
セクションとサポートされている環境変数のいずれかを含めます。[[build.env]] name = "ENVIRONMENT_VARIABLE_NAME" value = "ENVIRONMENT_VARIABLE_VALUE"
次のように置き換えます。
ENVIRONMENT_VARIABLE_NAME
は、サポートされている環境変数の名前に置き換えます。ENVIRONMENT_VARIABLE_VALUE
は、指定した環境変数に対応する値に置き換えます。
例
[[build.env]] name = "GOOGLE_ENTRYPOINT" value = "gunicorn -p :8080 main:app"
gcloud
を使用して、アプリケーションのソースコードを Cloud Build に送信します。gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE_NAME
次のように置き換えます。
LOCATION
は、コンテナ リポジトリのリージョン名に置き換えます。例:us-west2-docker.pkg.dev
PROJECT_ID
は、Google Cloud プロジェクトの ID に置き換えます。REPO_NAME
は Docker リポジトリの名前に置き換えます。IMAGE_NAME
は、コンテナ イメージの名前に置き換えます。
例: サンプルアプリをダウンロードした場合は、対応するコマンドを実行します。
Go
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-go
Java
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-java-gradle
Node.js
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-node
PHP
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-php
Python
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-python
Ruby
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-ruby
.NET
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-dotnet
-
サンプル アプリケーションが
REPO_NAME
に正常に公開されたことを確認します。gcloud artifacts docker images list LOCATION-docker.pkg.dev/project-id/REPO_NAME
次のように置き換えます。
LOCATION
は、コンテナ リポジトリのリージョン名に置き換えます。例:us-west2-docker.pkg.dev
PROJECT_ID
は、Google Cloud プロジェクトの ID に置き換えます。REPO_NAME
は Docker リポジトリの名前に置き換えます。