本頁面說明如何設定 Cloud Run 執行個體的進入點指令和引數。
Cloud Run 啟動容器時,會執行映像檔的預設進入點指令和預設指令引數。如要覆寫映像檔的預設進入點和指令引數,可以使用容器設定中的 command 和 args 欄位。command 欄位會指定容器執行的實際指令。args 欄位則指定傳遞至該指令的引數。
請注意,每個執行個體的每個容器最多可有 1000 個引數。
必要的角色
如要取得設定及部署 Cloud Run 執行個體所需的權限,請要求管理員授予您下列 IAM 角色:
- Cloud Run 執行個體的 Cloud Run 開發人員 (
roles/run.developer) - 服務身分的服務帳戶使用者 (
roles/iam.serviceAccountUser)
如要查看與 Cloud Run 相關聯的 IAM 角色和權限清單,請參閱「Cloud Run IAM 角色」和「Cloud Run IAM 權限」。如果 Cloud Run 執行個體與Google Cloud API (例如 Cloud 用戶端程式庫) 介接,請參閱服務身分設定指南。如要進一步瞭解如何授予角色,請參閱部署權限和管理存取權。
設定進入點和引數
如要覆寫預設映像檔 ENTRYPOINT 和 CMD 設定,您可以使用 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 INSTANCE --image IMAGE_URL --command COMMAND --args ARG1,ARG-N
將 IMAGE_URL 替換為容器映像檔的參照,例如 us-docker.pkg.dev/cloudrun/container/hello:latest。
如要將進入點指令和引數還原為容器預設值,請提供空字串,如下所示:
gcloud beta run instances update INSTANCE --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:傳送至容器指令的引數。如要使用多個引數,請在各行分別指定,例如 ARG-N。
使用下列指令建立或更新執行個體:
gcloud beta run instances replace instance.yaml
設定 sidecar 部署作業的容器啟動順序
如要在 sidecar 部署作業中指定容器啟動順序,請使用容器依附元件功能。指定任何具有依附元件的容器,並列出其依附的容器,以便優先啟動這些容器。沒有任何依附元件的容器一律會先啟動,且會同時啟動。
如要順利使用這項功能,您必須使用啟動健康狀態檢查探測。Cloud Run 會透過啟動探測檢查依附容器的健康狀態,確保容器通過檢查後,再啟動下一個容器。如果不使用健康狀態檢查,即使容器依賴的容器無法啟動,容器也會按照指定順序啟動。
使用 Google Cloud CLI 或 YAML 指定啟動順序:
gcloud
使用 Google Cloud CLI 指定啟動順序前,請先為其他容器依賴的任何邊車容器設定啟動健康狀態檢查。ingress 容器 (具有公開通訊埠的容器) 具有預設的 TCP 啟動健康狀態檢查。
-
在 Google Cloud 控制台啟用 Cloud Shell。
Google Cloud 控制台底部會開啟 Cloud Shell 工作階段,並顯示指令列提示。Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已設定適用於您目前專案的值。工作階段可能要幾秒鐘的時間才能初始化。
如要將多個容器部署至具有指定啟動順序的執行個體,請執行下列指令:
gcloud beta run instances deploy INSTANCE \ --container CONTAINER_1_NAME --image='IMAGE_URL' --port='CONTAINER_PORT' \ --container CONTAINER_2_NAME --image='SIDECAR_IMAGE' --depends-on=CONTAINER_1_NAME \ --startup-probe=tcpSocket.port=SIDECAR_PORT \ --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。- CONTAINER_PORT:ingress 容器監聽傳入要求的通訊埠。如果執行個體有多個容器,您必須明確設定輸入容器的容器通訊埠。
SIDECAR_IMAGE:sidecar 容器映像檔的參照。SIDECAR_PORT:TCP 啟動探測檢查的邊車容器通訊埠。如果其他容器依賴某個邊車容器,該邊車容器就必須設定啟動探測。
如要在 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 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 則最後啟動。
使用下列指令建立或更新執行個體:
gcloud beta run instances replace instance.yaml