コンテナを構成する

このページでは、Cloud Run サービスのコンテナポート、エントリポイント コマンドと引数を構成する方法と、Cloud Run ジョブのエントリポイント コマンドと引数を構成する方法について説明します。

Cloud Run がコンテナを起動すると、イメージのデフォルトのエントリポイント コマンドとデフォルトのコマンド引数が実行されます。イメージのデフォルトのエントリポイントとコマンド引数をオーバーライドする場合は、コンテナ構成の command フィールドと args フィールドを使用できます。command フィールドは、コンテナによって実行される実際のコマンドを指定します。args フィールドは、そのコマンドに渡される引数を指定します。

コンテナポートを構成する(サービス)

構成を変更すると、新しいリビジョンが作成されます。明示的に更新しない限り、以降のリビジョンでも、この構成が自動的に設定されます。

Cloud Run サービスの場合、Cloud Run によってコンテナに PORT 環境変数が挿入されます。コンテナは、特定のハードコードされたポートではなく、PORT 環境変数で定義されたポートをリッスンする必要があります。ただし、これができない場合は、どのポートのリクエストをコンテナに送信するかを構成できます。ポート設定は Cloud Run ジョブには適用されません。

コンソール

  1. Cloud Run に移動します

  2. デプロイ先の新しいサービスを構成する場合は、[サービスの作成] をクリックします。既存のサービスを構成する場合は、サービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。

  3. 新しいサービスを構成する場合は、最初のサービス設定のページに入力してから、[Container, Networking, Security] をクリックしてサービス構成ページを開きます。

  4. [コンテナ] タブをクリックします。

    画像

    • リクエストを送信するポートを指定します(デフォルト値「8080」でない場合)。これにより、「PORT」環境変数も設定されます。
  5. [作成] または [デプロイ] をクリックします。

コマンドライン

次のコマンドを使用して、サービスのポート構成を更新できます。

gcloud run services update SERVICE --port PORT

次のように置き換えます。

  • SERVICE は、サービスの名前に置き換えます。
  • PORT は、リクエストを送信するポートに置き換えます。デフォルトのポートは 8080 です。

デプロイの間に、次のコマンドを使用してポートを構成することもできます。

gcloud run deploy --image IMAGE_URL --port PORT

IMAGE_URL は、コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latest など)に置き換えます。Artifact Registry を使用する場合、URL は REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG という形式になります。​

YAML

既存のサービス構成をダウンロードして表示するには、gcloud run services describe --format export コマンドを使用します。読みやすく整えられた結果が YAML 形式で出力されます。次に、下記の手順に沿ってフィールドを変更し、gcloud run services replace コマンドを使用して変更後の YAML ファイルをアップロードします。必ず説明されているとおりにフィールドを変更してください。

  1. 次のコマンドで、構成を表示してダウンロードします。

    gcloud run services describe SERVICE --format export > service.yaml
  2. containerPort: 属性を更新します。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          name: REVISION
        spec:
          containers:
          - image: IMAGE_URL
            ports:
            - containerPort: PORT
    

    次のように置き換えます。

    • SERVICE は、Cloud Run サービスの名前に置き換えます。
    • IMAGE_URL は、コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latest など)に置き換えます。Artifact Registry を使用する場合、URL は REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG という形式になります。
    • PORT は、リクエストを送信するポートに置き換えます。
    • REVISION を新しいリビジョン名に置き換えるか、削除(存在する場合)します。新しいリビジョン名を指定する場合は、次の条件を満たす必要があります
      • SERVICE- で始まる
      • 小文字、数字、- のみが使用されている
      • 末尾が - ではない
      • 63 文字以内である
  3. 次のコマンドを使用して、サービスを新しい構成に置き換えます。

    gcloud run services replace service.yaml

コンテナのエントリポイント コマンドと引数を構成する

Cloud Run のジョブとサービスのエントリポイント コマンドと引数を構成できます。

Cloud Run サービスの場合

構成を変更すると、新しいリビジョンが作成されます。明示的に更新しない限り、以降のリビジョンでも、この構成が自動的に設定されます。

指定されたコンテナ コマンドと引数によって、デフォルトのイメージ ENTRYPOINTCMD がオーバーライドされます。

新しいサービスを作成するとき、または新しいリビジョンをデプロイするときに、Google Cloud コンソール、gcloud コマンドライン、または .yaml ファイルを使用して、エントリポイント コマンドと引数を設定できます。

コンソール

  1. Cloud Run に移動します

  2. デプロイ先の新しいサービスを構成する場合は、[サービスの作成] をクリックします。既存のサービスを構成する場合は、サービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。

  3. 新しいサービスを構成する場合は、最初のサービス設定のページに入力してから、[Container, Networking, Security] をクリックしてサービス構成ページを開きます。

  4. [コンテナ] タブをクリックします。

    画像

    • コンテナで実行するコマンドを指定します(コンテナでコマンドが定義されていない場合)。オプションで、エントリポイント コマンドへの引数を指定します。
  5. [作成] または [デプロイ] をクリックします。

コマンドライン

既存のサービスの start コマンドと引数を更新するには:

gcloud run services update SERVICE --command COMMAND --args ARG1,ARG-N

次のように置き換えます。

  • COMMAND は、デフォルトのコマンドを使用していない場合に、コンテナを起動するコマンドに置き換えます。
  • ARG1 は、コンテナ コマンドに送信する引数に置き換えます。引数が複数の場合はカンマ区切りのリストを使用します。

新しいサービスまたは既存のサービスのデプロイ中にエントリ ポイントと引数を指定するには:

gcloud run deploy --image IMAGE_URL --command COMMAND --args ARG1,ARG-N

IMAGE_URL は、コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latest など)に置き換えます。Artifact Registry を使用する場合、URL は REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG という形式になります。

設定したエントリポイント コマンドと引数をクリアするには(コンテナのデフォルトに戻すには)、次のように空の文字列を指定します。

gcloud run deploy --image IMAGE_URL --command "" --args ""

YAML

既存のサービス構成をダウンロードして表示するには、gcloud run services describe --format export コマンドを使用します。読みやすく整えられた結果が YAML 形式で出力されます。次に、下記の手順に沿ってフィールドを変更し、gcloud run services replace コマンドを使用して変更後の YAML ファイルをアップロードします。必ず説明されているとおりにフィールドを変更してください。

  1. 次のコマンドで、構成を表示してダウンロードします。

    gcloud run services describe SERVICE --format export > service.yaml
  2. command 属性と args 属性を更新します。

    spec:
      containers:
      - image: IMAGE_URL
        command:
        - COMMAND
        args:
        - "ARG1"
        - "ARG-N"
    

    次のように置き換えます。

    • IMAGE_URL は、コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latest など)に置き換えます。Artifact Registry を使用する場合、URL は REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG という形式になります。
    • COMMAND は、デフォルトのコマンドを使用していない場合に、コンテナを起動するコマンドに置き換えます。
    • ARG1 は、コンテナ コマンドに送信する引数に置き換えます。複数の引数を使用する場合は、それぞれを 1 行に 1 つずつ指定します。たとえば、上述の ARG-N のようにします。
  3. 次のコマンドを使用して、サービスを新しい構成に置き換えます。

    gcloud run services replace service.yaml

Terraform

Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。

次の google_cloud_run_service リソースでは、コマンドと引数を指定します。/server は、コンテナの起動に使用するコマンドに置き換え、必要な引数を args 配列に追加します。

resource "google_cloud_run_service" "default" {
  name     = "cloudrun-service-containers"
  location = "us-central1"

  template {
    spec {
      containers {
        image = "us-docker.pkg.dev/cloudrun/container/hello"

        # Container "entry-point" command
        # https://cloud.google.com/run/docs/configuring/containers#configure-entrypoint
        command = ["/server"]

        # Container "entry-point" args
        # https://cloud.google.com/run/docs/configuring/containers#configure-entrypoint
        args = []
      }
    }
  }
}

Cloud Run ジョブの場合

ジョブのコマンド エントリポイントと引数を構成するには:

コンソール

  1. Cloud Run に移動します

  2. 新しいジョブを構成する場合は、[ジョブ] タブをクリックし、必要に応じて初期ジョブ設定ページを入力します。既存のジョブを構成する場合は、ジョブをクリックして [編集] をクリックします。

  3. [コンテナ、変数とシークレット、接続、セキュリティ] をクリックして、ジョブのプロパティ ページを開きます。

  4. [全般] タブをクリックします。

    画像

    • コンテナで実行するコマンドを指定します(コンテナでコマンドが定義されていない場合)。オプションで、エントリポイント コマンドへの引数を指定します。
  5. [作成] または [更新] をクリックします。

コマンドライン

  1. 新しいジョブの start コマンドと引数を設定するには:

    gcloud run jobs create JOB_NAME --image IMAGE_URL --command COMMAND --args ARG1,ARG-N

    次のように置き換えます。

    • JOB_NAME は、ジョブの名前に置き換えます。
    • COMMAND は、デフォルトのコマンドを使用していない場合に、コンテナを起動するコマンドに置き換えます。
    • ARG1 は、コンテナ コマンドに送信する引数に置き換えます。引数が複数の場合は、カンマ区切りのリストを使用します。
    • IMAGE_URL は、コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/job:latest など)に置き換えます。

既存のジョブのコマンドと引数を更新するには:

gcloud run jobs update JOB_NAME --command COMMAND --args ARG1,ARG-N 

YAML

gcloud run jobs describe --format export コマンドを使用して既存のジョブ構成をダウンロードして表示します。読みやすく整えられた結果が YAML 形式で出力されます。次に、下記のフィールドを変更して、gcloud run jobs replace コマンドで変更後の YAML ファイルをアップロードします。必ず説明されているとおりにフィールドを変更してください。

  1. 次のコマンドで、構成を表示してダウンロードします。

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. args: 属性と command 属性を更新します。

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB_NAME
    spec:
      template:
        spec:
          template:
            spec:
              containers:
              - args:
                - 'ARG1'
                - 'ARG-N'
                command:
                - COMMAND
                image: IMAGE

    次のように置き換えます。

    • COMMAND は、デフォルトのコマンドを使用していない場合に、コンテナを起動するコマンドに置き換えます。
    • ARG1 は、コンテナ コマンドに送信する引数に置き換えます。必要に応じて、1 行に 1 つずつ追加の引数を指定します。

    環境変数やメモリ上限など他の構成を指定することもできます。

  3. 既存のジョブ構成を更新します。

    gcloud run jobs replace job.yaml

設定したエントリポイント コマンドと引数をクリアするには(コンテナのデフォルトに戻すには)、次のように空の文字列を指定します。

gcloud run jobs update JOB_NAME --command "" --args "" 

引数に等号またはカンマを使用する

引数で等号を使用する場合は、次の形式を使用して指定します。

gcloud run deploy  \
  --args="--repo-allowlist=github.com/example/example_demo"

引数にカンマが含まれる場合、カンマをエスケープする方法については、環境変数の構成をご覧ください。

サイドカー デプロイでコンテナの起動順序を構成する(サービス)

サイドカー デプロイでコンテナの起動順序を指定するには、コンテナの依存関係の特性を活用します。依存関係のあるコンテナを指定し、それらが依存するコンテナをリストします。これらのコンテナが最初に開始されます。依存関係のないコンテナは常に最初に同時実行として起動されます。

ヘルスチェック プローブを使用する場合、Cloud Run は依存コンテナの状態を検査します。この検査に合格してから次のコンテナを起動します。ヘルスチェックを使用しない場合、コンテナが起動に失敗した場合でも、コンテナは指定された順序で起動します。

プレビュー版では、YAML メソッドを使用して、コンテナの起動順序を構成する必要があります。起動順序を指定するには:

YAML

既存のサービス構成をダウンロードして表示するには、gcloud run services describe --format export コマンドを使用します。読みやすく整えられた結果が YAML 形式で出力されます。次に、下記の手順に沿ってフィールドを変更し、gcloud run services replace コマンドを使用して変更後の YAML ファイルをアップロードします。必ず説明されているとおりにフィールドを変更してください。

  1. 次のコマンドで、構成を表示してダウンロードします。

    gcloud run services describe SERVICE --format export > service.yaml
  2. container-dependencies 属性を更新します。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        run.googleapis.com/launch-stage: BETA
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/container-dependencies: '{"CONTAINER1":["CONTAINER2"], "CONTAINER3":["CONTAINER1","CONTAINER2"]}'
    

    次のように置き換えます。

    • CONTAINER1 は、1 つ以上のコンテナに依存する最初のコンテナの名前に置き換えます。コンテナ名は YAML で設定できます。名前を指定しなかった場合、Cloud Run は自動的に名前を生成します。
    • CONTAINER2 は、CONTAINER1 の前に起動する必要があるコンテナの名前に置き換えます。
    • CONTAINER3 は、1 つ以上のコンテナに依存する 2 番目のコンテナの名前に置き換えます。

    YAML スニペットの例では、CONTAINER2 が最初に起動し、次に CONTAINER1 が起動して、最後に CONTAINER3 が起動しています。

  3. 次のコマンドを使用して、サービスを新しい構成に置き換えます。

    gcloud run services replace service.yaml

コンテナ設定を表示する

Cloud Run サービスの現在のコンテナ設定を表示するには:

コンソール

  1. Cloud Run に移動します

  2. 目的のサービスをクリックして、[サービスの詳細] ページを開きます。

  3. [リビジョン] タブをクリックします。

  4. 右側の詳細パネルで、コンテナの設定が [コンテナ] タブに表示されます。

コマンドライン

  1. 次のコマンドを使用します。

    gcloud run services describe SERVICE
  2. 返された構成で、コンテナ設定を見つけます。

Cloud Run ジョブの現在のコンテナ設定を表示するには:

コンソール

  1. Cloud Run ジョブに移動

  2. 目的のジョブをクリックして、[ジョブの詳細] ページを開きます。

  3. [構成] タブをクリックします。

  4. 構成の詳細でシークレットの設定を見つけます。

コマンドライン

  1. 次のコマンドを使用します。

    gcloud run jobs describe JOB_NAME
  2. 返された構成で、コンテナ設定を見つけます。