ソースをコンテナにビルドする

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 にイメージをビルドできます。

  1. ソースと Dockerfile を含むフォルダに移動します。

  2. 次のコマンドを実行します。

    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 でコンテナ イメージをビルドするには:

  1. ソースと Dockerfile を含むフォルダに移動します。

  2. 次のコマンドを実行します。

    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 を指定する必要があります。

  3. コンテナ イメージをサポートされている 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 を使用してビルドするには:

  1. ソースを含むフォルダに移動します。

  2. 次のコマンドを実行します。

    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 です。

  3. ビルドが完了するまで待ちます。

pack コマンドラインと Google Cloud の Buildpack を使用してビルドする

pack コマンドを使用してビルドするには:

  1. まだインストールしていない場合は、Docker をインストールします。

  2. まだインストールしていない場合は、pack をインストールします。

  3. ソースを含むフォルダに移動します。

  4. 次のコマンドを実行してビルドし、サポートされている 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 です。

  5. pack が完了するまで待ちます。

詳しくは、アプリケーションのビルドの手順をご覧ください。

次のステップ