Cloud Run はソースコードを直接デプロイすることをサポートしていますが、ソースコードをコンテナ イメージにビルドして、そのコンテナ イメージを Cloud Run にデプロイすることもできます。コンテナ イメージは、任意の Cloud Run リソースに使用できます。
ビルド オペレーションとデプロイ オペレーションを分離する一般的なユースケースには、次のようなものがあります。
- 継続的インテグレーションと継続的デリバリー: 開発者がコードを作成してソース リポジトリに push すると、CI / CD システムがこのソースコードをコンテナに自動的にビルドし、テストを実行してステージング環境に自動的にデプロイします。
- Infrastructure as Code: YAML または Terraform を使用して管理される Cloud Run リソースは、コンテナ イメージの URL を参照します。デベロッパーが記述したソースコードは、コンテナ イメージにビルドする必要があります。
コンテナをビルドするシステムには任意のものを使用できます。このページでは、Cloud Build を使用してコンテナ イメージをビルドする次の方法について説明します。
Cloud Run サービスの要件
Cloud Run サービスの場合、コンテナ契約を遵守している限り、コンテナ イメージのビルドに対応しているツールでビルドされたコンテナ イメージを使用できます。コードは PORT
環境変数で定義されたポートで HTTP リクエストをリッスンする必要があります。この PORT
環境変数は、Cloud Run によってコンテナに自動的に挿入されます。
始める前に
このページの一部のコマンドを実行するには、Google Cloud CLI が必要です。
サポートされている Container Registry にリポジトリを作成します。Artifact Registry リポジトリを作成するには、次のコマンドを実行します。
gcloud artifacts repositories create REPOSITORY \ --repository-format=docker \ --location=LOCATION \ --description="DESCRIPTION" \ --immutable-tags \ --async
gcloud CLI 認証情報ヘルパーを使用して Artifact Registry にアクセスするように Docker を構成できます。
gcloud auth configure-docker LOCATION-docker.pkg.dev
LOCATION
は、コンテナ リポジトリのリージョン名(us-west2
など)に置き換えます。
Dockerfile を使用してビルドする
Docker または Cloud Build を使用してソースからコンテナ イメージをビルド(コンテナ化)する前に、ソースと Dockerfile を用意する必要があります。Hello World のサンプルには、一般的な言語のサンプル アプリケーションと Dockerfile が含まれています。
Dockerfile を使用する場合は、次のいずれかの方法でビルドできます。
- Cloud Build を使用してビルドする
- Docker を使用してローカルでビルドする
Cloud Build を使用してビルドする
Cloud Build を使用して、 Google Cloud にイメージをビルドできます。
ソースと Dockerfile を含むフォルダに移動します。
次のコマンドを実行します。
gcloud builds submit --tag IMAGE_URL
IMAGE_URL は、コンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/hello:latest
など)に置き換えます。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式はLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
です。
ビルドのパフォーマンスを向上させるヒントについては、ビルドの高速化をご覧ください。
ローカルにビルドして Docker で push する
Docker をローカルにインストールしている場合は、Cloud Build や Google Cloud の Buildpack の代わりに docker build
を使用できます。
Docker でコンテナ イメージをビルドするには:
ソースと
Dockerfile
を含むフォルダに移動します。次のコマンドを実行します。
docker build . --tag IMAGE_URL
IMAGE_URL は、コンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/hello:latest
など)に置き換えます。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式はLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
です。Apple シリコン搭載の Mac を使用している場合は、コマンドラインで
--platform linux/amd64
を指定する必要があります。コンテナ イメージをサポートされている Container Registry に push します。
docker push IMAGE_URL
IMAGE_URL は、コンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/hello:latest
など)に置き換えます。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式はLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
です。
このプロセスからローカル ファイルを除外するには、.dockerignore
構成ファイルの手順に沿って操作します。
Google Cloud の Buildpack を使用してビルドする
Google Cloud の Buildpack は、Cloud Run を含む Google Cloud コンテナ プラットフォームで実行するように設計されたコンテナ イメージにソースコードをビルドする、CNCF 互換の Buildpack のセットです。
サポートされている言語の一覧については、Google Cloud の Buildpack のドキュメントをご覧ください。
Cloud Build と Google Cloud の Buildpack を使用してビルドする
Google Cloud の Buildpack を使用してビルドするには:
ソースを含むフォルダに移動します。
次のコマンドを実行します。
gcloud builds submit --pack image=IMAGE_URL
IMAGE_URL は、コンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/hello:latest
など)に置き換えます。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式はLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
です。ビルドが完了するまで待ちます。
pack
コマンドラインと Google Cloud の Buildpack を使用してビルドする
pack コマンドを使用してビルドするには:
まだインストールしていない場合は、Docker をインストールします。
まだインストールしていない場合は、
pack
をインストールします。ソースを含むフォルダに移動します。
次のコマンドを実行してビルドし、サポートされている Container Registry に push します。
pack build --publish IMAGE_URL
IMAGE_URL は、コンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/hello:latest
など)に置き換えます。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式はLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
です。pack
が完了するまで待ちます。
詳しくは、アプリケーションのビルドの手順をご覧ください。
次のステップ
ビルドしたコンテナを Cloud Run にデプロイする。サービスをデプロイするをご覧ください。
ビルドされたコンテナ イメージから Cloud Run ジョブを作成して更新する方法について学習する。
コンテナがビルドされた後、Cloud Run にデプロイする前にローカルでテストする。Cloud Run サービスをローカルでテストするをご覧ください。
ビルドされたコンテナを使用してジョブを作成または更新したら、1 回限り、スケジュールに沿って、またはワークフローの一部としてジョブを実行する方法を確認してください。
Cloud Build トリガーを使用して Cloud Run サービスのビルドとデプロイを自動化する。継続的デプロイの設定をご覧ください。
Java アプリケーションに最適なコンテナビルドを実行する。Jib を使用して Java コンテナをビルドするをご覧ください。