本頁說明如何設定 Cloud Run 服務的容器埠、進入點指令和引數。
Cloud Run 啟動容器時,會執行映像檔的預設進入點指令和預設指令引數。如要覆寫映像檔的預設進入點和指令引數,可以使用容器設定中的 command
和 args
欄位。command
欄位會指定容器執行的實際指令。args
欄位會指定傳遞至該指令的引數。
請注意,每個服務的每個容器最多可有 1000 個引數。
必要的角色
如要取得設定及部署 Cloud Run 服務所需的權限,請要求管理員授予下列 IAM 角色:
-
Cloud Run 開發人員 (
roles/run.developer
) 在 Cloud Run 服務上 -
服務帳戶使用者 (
roles/iam.serviceAccountUser
) 服務身分
如需與 Cloud Run 相關聯的 IAM 角色和權限清單,請參閱 Cloud Run IAM 角色和 Cloud Run IAM 權限。如果 Cloud Run 服務與Google Cloud API (例如 Cloud 用戶端程式庫) 介接,請參閱服務身分設定指南。 如要進一步瞭解如何授予角色,請參閱部署權限和管理存取權。
設定容器通訊埠
變更任何設定都會建立新的修訂版本。除非您明確做出更新,變更這項設定,否則後續的修訂版本也會自動取得這個設定。
如果是 Cloud Run 服務,Cloud Run 會將 PORT
環境變數注入容器。如果您將多個容器部署至服務,這就是 Ingress 容器。容器會監聽 PORT
環境變數定義的通訊埠,而不是特定的硬式編碼通訊埠。如果無法這麼做,請設定在將要求傳送至容器的通訊埠上進行監聽。請注意,通訊埠設定「不」適用於 Cloud Run 作業。
控制台
前往 Google Cloud 控制台的 Cloud Run:
從選單中選取「服務」,然後按一下「部署容器」,設定新服務。如要設定現有服務,請按一下該服務,然後點選「編輯並部署新修訂版本」。
如要設定新服務,請填寫初始服務設定頁面,然後按一下「容器、磁碟區、網路與安全性」,展開服務設定頁面。
按一下「容器」分頁標籤。
- 指定要將要求傳送至的通訊埠 (如果不是預設值
8080
)。這也會設定PORT
環境變數。
- 指定要將要求傳送至的通訊埠 (如果不是預設值
按一下 [Create] (建立) 或 [Deploy] (部署)。
gcloud
您可以使用下列指令更新服務的連接埠設定:
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,則必須先建立存放區 REPO_NAME。網址的格式為 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
。
YAML
如要建立新服務,請略過這個步驟。 如要更新現有服務,請下載其 YAML 設定:
gcloud run services describe SERVICE --format export > service.yaml
更新
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,則必須先建立存放區 REPO_NAME。網址的格式為LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
。 - PORT,以及傳送要求的通訊埠
- REVISION,並提供新的修訂版本名稱,或刪除該名稱 (如有)。如果您提供新的修訂版本名稱,則必須符合下列條件:
- 開頭為「
SERVICE-
」 - 只能包含小寫字母、數字和
-
- 結尾不是
-
- 不超過 63 個半形字元
- 開頭為「
使用下列指令,以新設定取代服務:
gcloud run services replace service.yaml
Terraform
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
在 Terraform 設定中,將下列內容新增至google_cloud_run_v2_service
資源:resource "google_cloud_run_v2_service" "default" {
name = "SERVICE"
location = "REGION"
template {
containers {
name = "hello-1"
ports {
container_port = PORT
}
image = "IMAGE_URL"
}
}
}
取代:
- SERVICE 改為您的 Cloud Run 服務名稱。
- REGION 替換成 Google Cloud 地區。例如:
europe-west1
。 - 並參照容器映像檔,例如:
us-docker.pkg.dev/cloudrun/container/hello
IMAGE_URL - PORT,並將要求傳送至該連接埠。
設定進入點和引數
變更任何設定都會建立新的修訂版本。除非您明確做出更新,變更這項設定,否則後續的修訂版本也會自動取得這個設定。
指定的容器指令和引數會覆寫預設映像檔的 ENTRYPOINT
和 CMD
。
您在 Google Cloud 建立新服務或部署新修訂版本時,可以使用主控台、Google Cloud CLI 或 YAML 檔案設定進入點指令和引數:
控制台
前往 Google Cloud 控制台的 Cloud Run:
從選單中選取「服務」,然後按一下「部署容器」,設定新服務。如要設定現有服務,請按一下該服務,然後點選「編輯並部署新修訂版本」。
如要設定新服務,請填寫初始服務設定頁面,然後按一下「容器、磁碟區、網路與安全性」,展開服務設定頁面。
按一下「容器」分頁標籤。
- 指定容器要執行的指令 (如果不是容器中定義的指令),並視需要指定進入點指令的引數。
按一下 [Create] (建立) 或 [Deploy] (部署)。
gcloud
如要更新現有服務的啟動指令和引數,請按照下列步驟操作:
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,則必須先建立存放區 REPO_NAME。網址的格式為 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
如要清除您設定的所有進入點指令和引數 (還原為容器預設值),請提供空字串,如下所示:
gcloud run deploy --image IMAGE_URL --command "" --args ""
YAML
如要建立新服務,請略過這個步驟。 如要更新現有服務,請下載其 YAML 設定:
gcloud run services describe SERVICE --format export > service.yaml
更新
command
和args
屬性:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: spec: containers: - image: IMAGE_URL command: - COMMAND args: - ARG1 - ARG-N
取代
- IMAGE_URL,並參照容器映像檔,例如
us-docker.pkg.dev/cloudrun/container/hello:latest
。如果您使用 Artifact Registry,則必須先建立存放區 REPO_NAME。網址的格式為LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- COMMAND,並搭配容器啟動時要使用的指令 (如果不是預設指令)。
- ARG1,並將引數傳送至容器指令。如果使用多個引數,請在各自的行中指定,例如 ARG-N。
- IMAGE_URL,並參照容器映像檔,例如
使用下列指令,以新設定取代服務:
gcloud run services replace service.yaml
Terraform
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
在 Terraform 設定中,將下列項目新增至google_cloud_run_v2_service
資源:上述 google_cloud_run_v2_service
資源會指定指令和引數。將 /server
替換為用於啟動容器的指令,並在 args
陣列中新增任何必要引數。
在引數中使用等號或逗號
如果引數中含有等號,請使用下列格式提供引數:
gcloud run deploy \
--args="--repo-allowlist=github.com/example/example_demo"
如果引數使用半形逗號,請參閱設定環境變數,瞭解如何逸出這些引數。
設定補充部署作業的容器啟動順序
如要在附屬應用程式部署作業中指定容器啟動順序,請使用容器依附元件功能。您可以指定有依附元件的容器,並列出這些容器依附的容器,這些容器會先啟動。系統一律會先啟動沒有任何依附元件的容器,且會同時啟動。
如要順利使用這項功能,請務必使用啟動健康狀態檢查探針。啟動探測作業可讓 Cloud Run 檢查相依容器的健康狀態,確保容器順利通過檢查,再啟動下一個容器。如果您未使用健康檢查,即使容器所依附的容器無法啟動,系統仍會依指定順序啟動容器。
請注意,連入容器有預設的啟動健康狀態檢查探測。
您可以使用 Google Cloud 控制台、Google Cloud CLI 或 YAML 指定啟動順序:
控制台
前往 Google Cloud 控制台的 Cloud Run 頁面:
- 如果是現有服務,請按一下清單中的服務,然後選取「編輯並部署新修訂版本」,顯示修訂版本部署表單。
- 如要建立新服務,請從選單中選取「服務」,然後按一下「部署容器」,顯示「建立服務」表單。
如果是新服務,請指定服務名稱、Ingress 容器網址、CPU 分配量、Ingress 控制項和驗證。在「容器、磁碟區、網路與安全性」分頁中,執行下列操作:
- 設定 Ingress 容器。
- 如要新增部署的其他容器,請按一下「新增容器」。
- 除了 Ingress 容器之外,請為所有容器設定啟動健康狀態檢查。Ingress 容器預設會進行啟動健康狀態檢查。
- 如果容器需要先啟動其他容器才能啟動,請使用「容器啟動順序」選單選取必須先啟動的容器。
如要為現有服務執行這項操作,請按照下列步驟操作:
- 除了 Ingress 容器之外,請為所有容器設定啟動健康狀態檢查。Ingress 容器預設會進行啟動健康狀態檢查。
- 每個容器都會顯示自己的「容器啟動順序」選單。如果容器需要先啟動其他容器才能啟動,請使用「容器啟動順序」選單選取必須先啟動的容器。
完成其他必要設定,然後按一下「建立」(適用於新服務) 或「部署」(適用於現有服務)。等待部署完成。
gcloud
使用 Google Cloud CLI 指定啟動順序前,請先為所有容器 (Ingress 容器除外) 設定啟動健康狀態檢查。輸入容器具有預設的啟動健康狀態檢查。您無法使用 Google Cloud CLI 設定健康狀態檢查。
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
如要將多個容器部署至服務,並指定啟動順序,請執行下列指令:
gcloud run deploy SERVICE \ --container CONTAINER_1_NAME --image='INGRESS_IMAGE' --port='CONTAINER_PORT' \ --container CONTAINER_2_NAME --image='SIDECAR_IMAGE' --depends-on=CONTAINER_1_NAME \ --container CONTAINER_3_NAME --image='SIDECAR_IMAGE' --depends-on=CONTAINER_1_NAMECONTAINER_2_NAME
- 將 SERVICE 替換成您要部署的服務名稱。您可以完全省略這個參數,這樣系統會提示您輸入服務名稱。
- 將 CONTAINER_PORT 改為 Ingress 容器接聽傳入要求的連接埠。與單一容器服務不同,如果服務包含 Sidecar,則沒有預設的 Ingress 容器通訊埠。您必須明確設定 Ingress 容器的容器通訊埠,且只有一個容器可以公開通訊埠。
- 將 INGRESS_IMAGE 替換為應接收要求的容器映像檔參照,例如
us-docker.pkg.dev/cloudrun/container/hello:latest
。 將 SIDECAR_IMAGE 替換為 Sidecar 容器映像檔的參照
如要在部署指令中設定每個容器,請在
container
參數後提供每個容器的設定。
YAML
如要建立新服務,請略過這個步驟。 如要更新現有服務,請下載其 YAML 設定:
gcloud run services describe SERVICE --format export > service.yaml
更新
container-dependencies
屬性:apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/container-dependencies: '{"CONTAINER1":["CONTAINER2"], "CONTAINER3":["CONTAINER1","CONTAINER2"]}'
取代
- CONTAINER1,其中包含依附於一或多個容器的第一個容器名稱。請注意,您可以在 YAML 中設定容器名稱,如果未指定名稱,Cloud Run 會自動產生名稱。
- CONTAINER2,這是必須在 CONTAINER1 之前啟動的容器名稱。
- CONTAINER3,其中包含依附於一或多個容器的第二個容器名稱。
在 YAML 程式碼片段所示的範例中,CONTAINER2 會先啟動,CONTAINER1 接著啟動,CONTAINER3 則最後啟動。
使用下列指令,以新設定取代服務:
gcloud run services replace service.yaml
Terraform
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
在 Terraform 設定中,將下列內容新增至google_cloud_run_v2_service
資源:resource "google_cloud_run_v2_service" "default" {
name = "SERVICE"
location = "REGION"
template {
containers {
name = "CONTAINER1"
ports {
container_port = 8080
}
image = "us-docker.pkg.dev/cloudrun/container/hello"
depends_on = ["CONTAINER2"]
}
containers {
name = "CONTAINER2"
image = "us-docker.pkg.dev/cloudrun/container/hello"
env {
name = "PORT"
value = "8081"
}
startup_probe {
http_get {
port = 8081
}
}
}
containers {
name = "CONTAINER3"
image = "us-docker.pkg.dev/cloudrun/container/hello"
depends_on = ["CONTAINER1", "CONTAINER2"]
env {
name = "PORT"
value = "8080"
}
startup_probe {
http_get {
port = 8080
}
}
}
}
}
取代:
- SERVICE 改為您的 Cloud Run 服務名稱。
- REGION 替換成 Google Cloud 地區。例如:
europe-west1
。 - CONTAINER1,其中包含依附於一或多個容器的第一個容器名稱。
- CONTAINER2,其中 CONTAINER1 必須先啟動。
- 以依附於 CONTAINER1 和 CONTAINER2 的容器名稱取代 CONTAINER3。
查看容器設定
如要查看 Cloud Run 服務目前的容器設定:
控制台
前往 Google Cloud 控制台的 Cloud Run:
按一下感興趣的服務,開啟「服務詳細資料」頁面。
按一下「Revisions」(修訂版本) 分頁標籤。
在右側的詳細資料面板中,容器設定會列在「容器」分頁下方。
gcloud
使用下列指令:
gcloud run services describe SERVICE
在傳回的設定中找出容器設定。