設定執行個體的容器

本頁面說明如何為 Cloud Run 執行個體設定進入點指令和引數。

Cloud Run 啟動容器時,會執行映像檔的預設進入點指令和預設指令引數。如要覆寫映像檔的預設進入點和指令引數,可以使用容器設定中的 commandargs 欄位。command 欄位會指定容器執行的實際指令。args 欄位會指定傳遞至該指令的引數。

請注意,每個執行個體的每個容器最多可有 1000 個引數。

必要的角色

如要取得設定及部署 Cloud Run 執行個體所需的權限,請要求管理員授予您下列 IAM 角色:

如需與 Cloud Run 相關聯的 IAM 角色和權限清單,請參閱「Cloud Run IAM 角色」和「Cloud Run IAM 權限」。如果 Cloud Run 執行個體與Google Cloud API (例如 Cloud 用戶端程式庫) 介接,請參閱服務身分設定指南。 如要進一步瞭解如何授予角色,請參閱「部署權限」和「管理存取權」。

設定進入點和引數

如要覆寫預設的映像檔 ENTRYPOINTCMD 設定,您可以使用 Google Cloud CLI 或 YAML,為 Cloud Run 執行個體設定進入點指令和引數:

gcloud

如要更新現有執行個體的啟動指令和引數,請按照下列步驟操作:

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

如要還原 entrypoint 指令和引數的容器預設值,請提供空字串,如下所示:

gcloud beta run instances --image IMAGE_URL --command "" --args ""

YAML

  1. 如果您要建立新執行個體,請略過這個步驟。 如要更新現有執行個體,請下載其 YAML 設定

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. 以下範例包含 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:傳送至容器指令的引數。如果使用多個引數,請在各自的行中指定引數,例如如圖所示的 ARG-N
  3. 使用下列指令建立或更新執行個體:

    gcloud beta run instances replace instance.yaml

設定 Sidecar 部署作業的容器啟動順序

如要在附屬應用程式部署作業中指定容器啟動順序,請使用容器依附元件功能。指定有依附元件的容器,並列出這些容器依附的容器,以便優先啟動這些容器。系統一律會先啟動沒有任何依附元件的容器,且會同時啟動。

如要順利使用這項功能,必須使用啟動健康檢查探針。啟動探測作業可讓 Cloud Run 檢查相依容器的健康狀態,確保容器順利通過檢查,再啟動下一個容器。如果您未使用健康狀態檢查,即使所依附的容器無法啟動,系統仍會依指定順序啟動容器。

請注意,執行個體沒有預設啟動健康狀態檢查探測。

使用 Google Cloud CLI 或 YAML 指定啟動順序:

gcloud

使用 Google Cloud CLI 指定啟動順序前,請先設定啟動健康狀態檢查

  1. 在 Google Cloud 控制台中啟用 Cloud Shell。

    啟用 Cloud Shell

    控制台底部會開啟 Cloud Shell 工作階段,並顯示指令列提示。 Google Cloud Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已針對您目前的專案設定好相關值。工作階段可能要幾秒鐘的時間才能初始化。

  2. 如要將多個容器部署至執行個體,並指定啟動順序,請執行下列指令:

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:補充容器映像檔的參照。

    如要在部署指令中設定每個容器,請在 container 參數後提供每個容器的設定。

YAML

  1. 如果您要建立新執行個體,請略過這個步驟。 如要更新現有執行個體,請下載其 YAML 設定

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. 以下範例包含 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:第一個容器的名稱,該容器依附於一或多個容器。您可以在 YAML 中設定容器名稱;如果未指定名稱,Cloud Run 會自動產生名稱。
    • CONTAINER2:必須在 CONTAINER1 之前啟動的容器名稱。
    • CONTAINER3:第二個容器的名稱,該容器依附於一或多個容器。

    在 YAML 程式碼片段所示的範例中,CONTAINER2 會先啟動,CONTAINER1 接著啟動,CONTAINER3 最後啟動。

  3. 使用下列指令建立或更新執行個體:

    gcloud beta run instances replace instance.yaml