このページでは、Cloud Run インスタンスのエントリポイント コマンドと引数を構成する方法について説明します。
Cloud Run がコンテナを起動すると、イメージのデフォルトのエントリポイント
コマンドとデフォルトのコマンド引数が実行されます。イメージのデフォルトのエントリポイントとコマンド引数をオーバーライドする場合は、コンテナ構成の command フィールドと args フィールドを使用できます。command フィールドは、コンテナによって実行される実際のコマンドを指定します。args フィールドは、そのコマンドに渡される引数を指定します。
インスタンスごとに、コンテナごとに最大 1,000 個の引数を指定できます。
必要なロール
Cloud Run インスタンスの構成とデプロイに必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。
- Cloud Run インスタンスに対する Cloud Run デベロッパー (
roles/run.developer) - サービス ID に対するサービス アカウント ユーザー (
roles/iam.serviceAccountUser)
Cloud Run に関連付けられている IAM ロールと権限のリストについては、 Cloud Run IAM ロール と Cloud Run IAM 権限をご覧ください。 Cloud Run インスタンスが Google Cloud API(Cloud クライアント ライブラリなど)と連携している場合は、 サービス ID の構成ガイドをご覧ください。 ロールの付与の詳細については、 デプロイ権限 とアクセスの管理をご覧ください。
エントリポイントと引数を構成する
デフォルトのイメージ ENTRYPOINT と CMD の設定をオーバーライドするには、Google Cloud CLI または YAML を使用して Cloud Run インスタンスのエントリポイント コマンドと引数を設定します。
gcloud
既存のインスタンスの start コマンドと引数を更新するには:
gcloud beta run instances update INSTANCE --command COMMAND --args ARG1,ARG-N
次のように置き換えます。
- INSTANCE: インスタンスの名前。
- COMMAND:デフォルトのコマンドを使用していない場合に、コンテナを起動するコマンド。
- ARG1: コンテナ コマンドに送信する引数。複数の引数を指定する場合は、カンマ区切りのリストを使用します。
新しいインスタンスまたは既存のインスタンスの デプロイ中にエントリポイントと引数を指定するには:
gcloud beta run instances deploy --image IMAGE_URL --command COMMAND --args ARG1,ARG-N
IMAGE_URL は、コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latest など)に置き換えます。
エントリポイント コマンドと引数のコンテナのデフォルトを復元する場合は、次のように空の文字列を指定します。
gcloud beta run instances --image IMAGE_URL --command "" --args ""
YAML
新しいインスタンスを作成する場合は、この手順をスキップします。 既存のインスタンスを更新する場合は、その YAML 構成をダウンロードします。
gcloud beta run instances describe INSTANCE --format export > instance.yaml
次の例には、YAML 構成が含まれています。
apiVersion: run.googleapis.com/v1 kind: Instance metadata: name: INSTANCE annotations: run.googleapis.com/launch-stage: BETA spec: containers: - name: CONTAINER_NAME image: IMAGE_URL command: - COMMAND args: - ARG1 - ARG-N
次のように置き換えます。
- INSTANCE: Cloud Run インスタンスの名前。
- CONTAINER_NAME: コンテナの名前。
IMAGE_URL: コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latestなど)。- COMMAND: デフォルトのコマンドを使用していない場合に、コンテナを起動するコマンド。
- ARG1: コンテナ コマンドに送信する引数。複数の引数を使用する場合は、1 行に 1 つずつ指定します。たとえば、上述の ARG-N のようにします。
次のコマンドを使用して、インスタンスを作成または更新します。
gcloud beta run instances replace instance.yaml
サイドカー デプロイでコンテナの起動順序を構成する
サイドカー デプロイでコンテナの起動順序を指定するには、 コンテナの依存関係の特性を利用します。依存関係のあるコンテナを指定し、それらが依存するコンテナをリストします。これらのコンテナが最初に開始されます。依存関係のないコンテナは常に最初かつ同時に起動されます。
この機能を正常に使用するには、起動ヘルスチェック プローブを使用する必要があります。起動プローブにより、Cloud Run は依存コンテナの健全性を検査し、次のコンテナを起動する前に問題ないことを確認します。ヘルスチェックを使用しない場合、依存するコンテナが起動に失敗した場合でも、コンテナは指定された順序で起動します。
インスタンスのデフォルトの起動ヘルスチェック プローブはありません。
Google Cloud CLI または YAML を使用して起動順序を指定します。
gcloud
Google Cloud CLI を使用して起動順序を指定する前に、 起動ヘルスチェックを構成します。
-
コンソール Google Cloud で Cloud Shell をアクティブにします。
コンソールの下部にある Google Cloud Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です 。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています 。セッションが初期化されるまで数秒かかることがあります。
指定した起動順序で複数のコンテナをインスタンスにデプロイするには、次のコマンドを実行します。
gcloud beta run instances deploy INSTANCE \ --container CONTAINER_1_NAME --image='INSTANCE_IMAGE' --container CONTAINER_2_NAME --image='SIDECAR_IMAGE' --depends-on=CONTAINER_1_NAME \ --container CONTAINER_3_NAME --image='SIDECAR_IMAGE' --depends-on=CONTAINER_1_NAME,CONTAINER_2_NAME
次のように置き換えます。
- INSTANCE: インスタンスの名前。
IMAGE_URLは、コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latestなど)に置き換えます。SIDECAR_IMAGE: サイドカー コンテナ イメージへの参照。deploy コマンドで各コンテナを構成する場合は、
containerパラメータの後に各コンテナの構成を指定します。
YAML
新しいインスタンスを作成する場合は、この手順をスキップします。 既存のインスタンスを更新する場合は、その YAML 構成をダウンロードします。
gcloud beta run instances describe INSTANCE --format export > instance.yaml
次の例には、YAML 構成が含まれています。
apiVersion: run.googleapis.com/v1 kind: Instance metadata: name: INSTANCE spec: template: metadata: annotations: run.googleapis.com/container-dependencies: '{"CONTAINER1":["CONTAINER2"], "CONTAINER3":["CONTAINER1","CONTAINER2"]}'
次のように置き換えます。
- INSTANCE: Cloud Run インスタンスの名前。
- CONTAINER1:1 つ以上のコンテナに依存する 1 番目のコンテナの名前。コンテナ名は YAML で設定できます。名前を指定しなかった場合、Cloud Run は自動的に名前を生成します。
- CONTAINER2: CONTAINER1 の前に起動する必要があるコンテナの名前。
- CONTAINER3: 1 つ以上のコンテナに依存する 2 番目のコンテナの名前。
YAML スニペットの例では、CONTAINER2 が最初に起動し、次に CONTAINER1 が起動して、最後に CONTAINER3 が起動しています。
次のコマンドを使用して、インスタンスを作成または更新します。
gcloud beta run instances replace instance.yaml