このページでは、1 つの gcloud CLI コマンド gcloud run deploy
と --source
フラグを使用して、新しいサービスとリビジョンをソースコードから直接 Cloud Run にデプロイする方法について説明します。Hello World サービスをデプロイするチュートリアルの例については、クイックスタート: ソースからデプロイするをご覧ください。
このコマンドはバックグラウンドで Google Cloud の Buildpack と Cloud Build を使用して、Docker マシンへのインストール、Buildpack や Cloud Build の設定を行わずに、ソースコードからコンテナ イメージを自動的にビルドします。つまり、上記のコマンドで必要とするのは gcloud builds submit
コマンドと gcloud run deploy
コマンドだけです。
ソースデプロイでは、Artifact Registry を使用してビルドされたコンテナが保存されます。プロジェクトで、デプロイ先のリージョンに cloud-run-source-deploy
という名前の Artifact Registry リポジトリがまだない場合、この機能により、cloud-run-source-deploy
という名前の Artifact Registry リポジトリが自動的に作成されます。
Dockerfile がソースコード ディレクトリにある場合、アップロードしたソースコードはその Dockerfile を使用してビルドされます。ソースコード ディレクトリに Dockerfile が存在しない場合、Google Cloud の Buildpack は、使用されている言語を自動的に検出してコードの依存関係を取得し、Google が管理する安全なベースイメージを使用してプロダクション レディなコンテナ イメージを作成します
デフォルトでは、セキュリティ修正はサービスがデプロイされた場合にのみ適用されます。サービスのセキュリティの自動更新を有効にすると、そのサービスはダウンタイムなしでパッチを自動的に受け取ります。詳しくは、セキュリティ更新の構成をご覧ください。
サポートされている言語
Dockerfile を含むソースに加えて、ソースからのデプロイでは以下の言語がサポートされています。
詳細については、サポートされている言語のバージョンをご覧ください。
この機能の制限事項
- ソースからのデプロイでは Artifact Registry と Cloud Build が使用されるため、この機能は Artifact Registry と Cloud Build でサポートされているリージョンでのみ使用できます。
gcloud run deploy --source
を使用してソースからデプロイする機能は便利ですが、ビルドを完全にカスタマイズすることはできません。より細かく制御するには、Cloud Build を使用してコンテナ イメージをビルドします。たとえば、gcloud builds submit
を使用し、次にgcloud run deploy --image
などを使用してコンテナ イメージをデプロイします。- Google Cloud の Buildpack を使用してソースからデプロイすると、ソースファイルの最終更新日は 1980 年 1 月 1 日に設定されます。これは Buildpack のデフォルトの動作で、再現性のあるビルドをサポートするように設計されています。言語フレームワークによっては、静的ファイルのブラウザ側のキ��ッシュに影響する可能性があります。アプリケーションがこの影響を受ける場合は、アプリケーションで
etag
とLast-Modified
�� HTTP ヘッダーを無効にすることをおすすめします。 - Google Cloud の Buildpack でソースからデプロイする場合は、常に
gcr.io/buildpacks/builder:latest
を使用します。latest
で優先言語または OS 構成を使用できない場合は、特定のビルダーを使用し、優先ビルダーでアプリケーション イメージを作成します。 Kotlin や Java などの JVM 言語を使用して、ソースからサービスをデプロイできます。使用する言語は、次のルールに準拠している必要があります。
- アプリケーションは Maven または Gradle を使用してビルドできます。
- ビルドファイルには、クラスを生成するために必要なすべてのプラグインが含まれています。
始める前に
- 設定ページの説明に従って、Cloud Run に新しいプロジェクトを設定したことを確認してください。
ドメイン制限の組織のポリシーでプロジェクトの未認証呼び出しが制限されている場合は、限定公開サービスのテストの説明に従って、デプロイされたサービスにアクセスする必要があります。
Cloud Run Admin API と Cloud Build API を有効にします。
gcloud services enable run.googleapis.com \ cloudbuild.googleapis.com
Cloud Run Admin API を有効にすると、Compute Engine のデフォルトのサービス アカウントが自動的に作成されます。
必要なロール
ユーザーまたは管理者は、デプロイ担当者アカウントと Cloud Build サービス アカウントに次の IAM ロールを付与する必要があります。
クリックしてデプロイ担当者アカウントに必要なロールを表示
ソースからビルドしてデプロイするために必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。
- プロジェクトに対する Cloud Run ソース デベロッパー(
roles/run.sourceDeveloper
) - プロジェクトの Service Usage ユーザー(
roles/serviceusage.serviceUsageConsumer
) - Cloud Run サービス ID に対するサービス アカウント ユーザー(
roles/iam.serviceAccountUser
)
クリックして Cloud Build サービス アカウントに必要なロールを表示
この動作をオーバーライドしない限り、Cloud Build は、ソースコードと Cloud Run リソースのビルドにデフォルトの Cloud Build サービス アカウントとして Compute Engine のデフォルトのサービス アカウントを自動的に使用します。Cloud Build がソースをビルドできるようにするには、プロジェクトの Compute Engine のデフォルトのサービス アカウントに Cloud Run ビルダー(roles/run.builder
)を付与するよう管理者に依頼します。
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/run.builder
PROJECT_NUMBER
は Google Cloudプロジェクト番号に、PROJECT_ID
は Google Cloudプロジェクト ID に置き換えます。プロジェクト ID とプロジェクト番号を確認する方法については、プロジェクトの作成と管理をご覧ください。
Compute Engine のデフォルト サービス アカウントに Cloud Run ビルダーのロールを付与すると、反映されるまでに数分かかることがあります。
Cloud Run に関連付けられている IAM ロールと権限のリストについては、Cloud Run IAM ロールと Cloud Run IAM 権限をご覧ください。Cloud Run サービスがGoogle Cloud API(Cloud クライアント ライブラリなど)と連携している場合は、サービス ID の構成ガイドをご覧ください。ロールの付与の詳細については、デプロイ権限とアクセスの管理をご覧ください。
デプロイ
ソースコードからデプロイするには:
ソース ディレクトリに移動します。ソース ディレクトリに Dockerfile は必要ありませんが、Dockerfile が存在する場合はそれが使用されます。
アプリケーションをビルドしてデプロイします。
gcloud run deploy SERVICE --source .
SERVICE
は、��ービスに付け��名前で置き換えます。必要に応じて、ソースコードでサポートされている言語ランタイムのいずれかを使用していて、ランタイムのベースイメージの自動更新を構成する場合は、サービスのベースイメージ(
nodejs22
など)で、--automatic-updates
フラグと--base-image
フラグを指定します。プロンプトが表示されたら、「
y
」と応答して、必要な API をインストールします。これが必要なのはプロジェクトに対して 1 回だけです。設定ページに記載されているように、デフォルト値を設定しない場合は、別のプロンプトにプラットフォームとリージョンを指定して応答します。ビルドとデプロイが完了するまで待ちます。完了すると、次のようなメッセージが表示されます。
Service [my-app] revision [my-app-00000-xxx] has been deployed and is serving 100 percent of traffic. Service URL: https://my-app-texampleq-uc.a.run.app
デプロイ時に、このサービスのリビジョンはトラフィックを 100% 処理します。
ソースからのビルドの自動化
ローカルソースで、バージョニングされていない変更が行われないようにするため、変更を Git リポジトリに push する際に自動的にデプロイすることをおすすめします。これを簡単に行うために、Cloud Run サービスに接続して、継続的なデプロイを構成できます。GitHub リポジトリを Cloud Run に接続することで、Dockerfile の記述やファイルのビルドなしで、ビルドを構成してリポジトリをデプロイできます。
自動ビルドを構成するには、継続的なビルドのページの説明に従って自動化を設定し、Buildpacks を使用してソースをビルドするオプションを選択します。
次のステップ
新しいサービスをデプロイしたら、次のことを行うことができます。
- 段階的なロールアウト、ロールバックの修正、トラフィックの移行
- サービス���グを表示する
- サービスのパフォーマンスをモニタリングする
- メモリ制限を設定する
- 環境変数を設定する
- サービスの同時実行を変更する
- サービスを管理する
- サービスのリビジョンを管理する
ソースのデプロイ構成について学びます。
Cloud Build トリガーを使用して Cloud Run サービスのビルドとデプロイを自動化できます。