ソースコードからデプロイする

このページでは、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 を含むソースに加えて、ソースからのデプロイでは以下の言語がサポートされています。

  • Go
  • Node.js
  • Python
  • Java
  • Kotlin
  • .NET
  • Ruby
  • PHP

詳細については、Google Cloud の Buildpack でサポートされている言語のバージョンをご覧ください。

この機能の制限事項

  • ソースからのデプロイは Artifact Registry を使用するため、この機能は Artifact Registry でサポートされているリージョンでのみ使用できます。
  • gcloud run deploy --source を使用してソースからデプロイする機能は便利ですが、ビルドを完全にカスタマイズすることはできません。より細かく制御するには、Cloud Build を使用してコンテナ イメージをビルドします。たとえば、gcloud builds submit を使用し、次に gcloud run deploy --image などを使用してコンテナ イメージをデプロイします。
  • Google Cloud の Buildpack を使用してソースからデプロイすると、ソースファイルの最終更新日は 1980 年 1 月 1 日に設定されます。これは Buildpack のデフォルトの動作で、再現性のあるビルドをサポートするように設計されています。言語フレームワークによっては、静的ファイルのブラウザ側のキャッシュに影響する可能性があります。アプリケーションがこの影響を受ける場合は、アプリケーションで etagLast-Modified の HTTP ヘッダーを無効にすることをおすすめします。
  • Google Cloud の Buildpack でソースからデプロイする場合は、常に gcr.io/buildpacks/builder:latest を使用します。latest で優先言語または OS 構成を使用できない場合は、特定のビルダーを使用し、優先ビルダーでアプリケーション イメージを作成します。

始める前に

  • 設定ページの説明に従って、Cloud Run に新しいプロジェクトを設定したことを確認してください。
  • ドメイン制限の組織のポリシーでプロジェクトの未認証呼び出しが制限されている場合は、プライベート サービスのテストの説明に従って、デプロイされたサービスにアクセスする必要があります。

デプロイに必要な権限

ソースからデプロイするには、コンテナ イメージをビルドして保存し、デプロイするための権限が必要です。

次のいずれかが必要です。

デプロイ

ソースコードからデプロイするには:

  1. ソース ディレクトリに移動します。ソース ディレクトリに Dockerfile は必要ありませんが、Dockerfile が存在する場合はそれが使用されます。

  2. アプリケーションをビルドしてデプロイします。

    gcloud run deploy SERVICE --source .

    SERVICE は、サービスに付ける名前で置き換えます。

    プロンプトが表示されたら、「y」と応答して、必要な API をインストールします。これが必要なのはプロジェクトに対して 1 回だけです。設定ページに記載されているように、デフォルト値を設定しない場合は、別のプロンプトにプラットフォームとリージョンを指定して応答します。

  3. ビルドとデプロイが完了するまで待ちます。完了すると、次のようなメッセージが表示されます。

    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 サービスのビルドとデプロイを自動化できます。