本頁面說明如何將容器映像檔部署到新的 Cloud Run 服務,或現有 Cloud Run 服務的新修訂版本。
部署時,Cloud Run 會匯入容器映像檔。 只要容器映像檔用於提供修訂版本,Cloud Run 就會保留這份副本。啟動新的 Cloud Run 執行個體時,系統不會從容器存放區提取容器映像檔。
如需部署新服務的範例逐步說明,請參閱「部署範例容器快速入門導覽課程」。
事前準備
如果專案受限於網域限制組織政策,禁止未經驗證的叫用,您必須按照「測試私人服務」一節的說明存取已部署的服務。
必要的角色
如要取得部署 Cloud Run 服務所需的權限,請要求管理員授予您下列 IAM 角色:
- Cloud Run 服務的 Cloud Run 開發人員 (
roles/run.developer) - 服務身分上的服務帳戶使用者 (
roles/iam.serviceAccountUser) - 已部署容器映像檔的 Artifact Registry 存放區的「Artifact Registry Reader」 (
roles/artifactregistry.reader) -
如果您使用跨專案服務帳戶部署服務:
服務身分上的「服務帳戶憑證建立者」 (
roles/iam.serviceAccountTokenCreator)
如需與 Cloud Run 相關聯的 IAM 角色和權限清單,請參閱「Cloud Run IAM 角色」和「Cloud Run IAM 權限」。如果 Cloud Run 服務與Google Cloud API (例如 Cloud 用戶端程式庫) 介接,請參閱服務身分設定指南。 如要進一步瞭解如何授予角色,請參閱「部署權限」和「管理存取權」。
支援的容器登錄和映像檔
您可以直接使用儲存在 Artifact Registry 的容器映像檔,或是來自 Docker Hub 或 GitHub Container Registry 的公開映像檔。Google 建議使用 Artifact Registry。 GitHub Container Registry 和 Docker Hub 映像檔的公開映像檔最多會快取一小時。
如要使用其他公開或私人註冊資料庫 (例如 JFrog Artifactory 或 Nexus) 的容器映像檔,或是 GitHub Container Registry 的私人映像檔,請設定 Artifact Registry 遠端存放區。
只有在部署熱門容器映像檔 (例如 Docker 官方映像檔或 Docker 贊助的 OSS 映像檔) 時,才應考慮使用 Docker Hub。如要提高可用性,Google 建議使用 Artifact Registry 遠端存放區部署這些 Docker Hub 或 GitHub Container Registry 映像檔。
從 Docker Hub 或 Artifact Registry 遠端存放區 (使用外部登錄檔) 部署時,Cloud Run 不支援大於 9.9 GB 的容器映像檔層。
部署新服務
您可以使用標記 (例如 us-docker.pkg.dev/my-project/container/my-image:latest) 或完全相符的摘要 (例如 us-docker.pkg.dev/my-project/container/my-image@sha256:41f34ab970ee...) 指定容器映像檔。
首次部署服務時會建立服務的第一個修訂版本。請注意修訂版本無法變更。如果您透過容器映像檔標記進行部署,這會變成摘要,而修訂版本一律會提供這個特別的摘要。
控制台
如何部署容器映像檔:
前往 Google Cloud 控制台的 Cloud Run 頁面:
按一下「Deploy container」(部署容器),顯示「Create service」(建立服務) 表單。
在表單中選取部署選項。
如要手動部署容器,請選取「透過現有的容器映像檔部署單一修訂版本」,並指定容器映像檔。
如要自動執行持續部署作業,請選取「持續透過原始碼存放區部署新的修訂版本」,然後按照持續部署作業的說明操作。
輸入服務名稱。服務名稱不得超過 49 個字元,且每個區域和專案的服務名稱不得重複。服務名稱一經設定即無法變更,而且會公開顯示。
在「Region」(區域) 欄位中, 選取要使用服務的區域。
在「驗證」下方,設定下列項目:
- 如要建立公用 API 或網站,請選取「允許公開存取」。如果選取這個選項,系統會將「IAM 叫用者」角色指派給特殊 ID
allUser。您可以在建立服務之後使用 IAM 編輯這項設定。 - 如要透過驗證保護安全服務,請選取「需要驗證」。
- 如要建立公用 API 或網站,請選取「允許公開存取」。如果選取這個選項,系統會將「IAM 叫用者」角色指派給特殊 ID
視需要設定帳單。
在「服務調度」下方,如果您使用預設的 Cloud Run 自動調度,可以選擇指定最少執行個體數。如果您使用手動調整資源配置,請指定服務的執行個體數量。
視需要在表單中設定 Ingress 設定。
按一下「容器、網路、安全性」,在適當的分頁中設定其他選用設定:
設定完服務後,請按一下「Create」(建立),將映像檔部署到 Cloud Run,然後等待部署作業完成。
按一下畫面顯示的網址連結,開啟您所部署服務的穩定專屬端點。
gcloud
-
在 Google Cloud 控制台中啟用 Cloud Shell。
控制台底部會開啟 Cloud Shell 工作階段,並顯示指令列提示。 Google Cloud Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已針對您目前的專案設定好相關值。工作階段可能要幾秒鐘的時間才能初始化。
如何部署容器映像檔:
請執行下列指令:
gcloud run deploy SERVICE --image IMAGE_URL更改下列內容:
- SERVICE:要部署的服務名稱。服務名稱不得超過 49 個字元,且每個區域和專案的服務名稱不得重複。如果服務尚未存在,這個指令會在部署期間建立服務。您可以完全省略這個參數,這樣系統會提示您輸入服務名稱。
IMAGE_URL:容器映像檔的參照,例如us-docker.pkg.dev/cloudrun/container/hello:latest。如果您使用 Artifact Registry,則必須先建立存放區 REPO_NAME。網址格式為LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG。請注意,如果未提供--image標記,部署指令會嘗試從原始碼部署。
如要建立公用 API 或網站,請使用
--allow-unauthenticated旗標,允許公開存取服務。這會 將 Cloud Run 叫用者 IAM 角色 指派給allUsers。您也可以指定--no-allow-unauthenticated來禁止公開存取。如果省略任一標記,在執行deploy指令時系統會提示您進行確認。等待部署作業完成。成功完成時,畫面會顯示成功訊息,還有已部署服務的網址。
請注意,如要部署到「不是」使用
run/regiongcloud屬性設定的位置,請使用以下指令:gcloud run deploy SERVICE --region REGION
YAML
您可以將服務規格儲存在 YAML 檔案中,然後使用 gcloud CLI 部署。
建立新的
service.yaml檔案,並加入以下內容:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: spec: containers: - image: IMAGE
更改下列內容:
- SERVICE:Cloud Run 服務的名稱。 服務名稱不得超過 49 個字元,且每個區域和專案的服務名稱不得重複。
- IMAGE:容器映像檔的網址。
您也可以指定更多設定,例如環境變數或記憶體限制。
使用下列指令部署新服務:
gcloud run services replace service.yaml如果存在
service.yaml檔案,gcloud run services replace指令預設會使用該檔案。如要允許未經驗證的存取權,可以公開服務。
Terraform
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
在 Terraform 設定中,將下列內容新增至google_cloud_run_v2_service 資源: provider "google" {
project = "PROJECT-ID"
}
resource "google_cloud_run_v2_service" "default" {
name = "SERVICE"
location = "REGION"
client = "terraform"
template {
containers {
image = "IMAGE_URL"
}
}
}
resource "google_cloud_run_v2_service_iam_member" "noauth" {
location = google_cloud_run_v2_service.default.location
name = google_cloud_run_v2_service.default.name
role = "roles/run.invoker"
member = "allUsers"
}
更改下列內容:
- PROJECT-ID: Google Cloud 專案 ID
- REGION: Google Cloud 區域
- SERVICE:Cloud Run 服務的名稱。服務名稱不得超過 49 個字元,且每個區域和專案的服務名稱不得重複。
IMAGE_URL:容器映像檔的參照,例如us-docker.pkg.dev/cloudrun/container/hello:latest。如果您使用 Artifact Registry,則必須先建立存放區 REPO_NAME。網址格式為LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
這項設定允許公開存取 (相當於 --allow-unauthenticated)。如要將服務設為私有,請移除 google_cloud_run_v2_service_iam_member 節。
撰寫
您可以將 Compose 規格儲存在 YAML 檔案中,然後使用單一 gcloud 指令,將其部署為 Cloud Run 服務。
如要將 compose.yaml 檔案部署為 Cloud Run 服務,請按照下列步驟操作:
在專案目錄中,建立包含服務定義的
compose.yaml檔案。services: web: image: IMAGE ports: - "8080:8080"
將 IMAGE_URL 替換為容器映像檔的網址。
您也可以指定更多設定選項,例如環境變數、密鑰和磁碟區掛接。
部署服務
如要部署服務,請執行
gcloud run compose up指令:gcloud run compose up compose.yaml回應
y安裝必要元件或啟用 API 的任何提示。選用:公開發布服務,允許未經驗證的存取。
部署完成後,畫面會顯示 Cloud Run 服務網址。複製這個網址並貼到瀏覽器,即可查看正在執行的容器。您可以在 Google Cloud 控制台停用預設驗證。
MCP
您可以使用 AI 代理,透過官方 Cloud Run MCP 伺服器部署服務。
為獲得最佳結果,請先告知代理程式偏好使用 MCP 工具,而非 gcloud CLI,再開始使用這個 MCP 伺服器。
如要設定 Cloud Run 遠端 MCP 伺服器,請按照「使用 Cloud Run 遠端 MCP 伺服器」指南中的操作說明進行。
如要從範例
helloworld容器映像檔部署服務,請使用下列提示指示代理程式:Deploy service "helloworld" to Cloud Run from the container imageus-docker.pkg.dev/cloudrun/container/hello.代理程式會使用
deploy_service_from_image工具,將容器映像檔部署為 Cloud Run 服務。
使用 /deploy 提示
您可以使用 /deploy 提示,透過 Cloud Run MCP 伺服器快速部署服務。你可能需要瀏覽聊天機器人選單,才能找到所需工具或提示。
如要將目前的工作目錄部署至 Cloud Run,請執行下列 /deploy 提示:
/deploySERVICE_NAME\ --projectPROJECT_ID\ --regionREGION\
更改下列內容:
SERVICE_NAME:Cloud Run 服務的名稱PROJECT_ID: Google Cloud 專案 IDREGION:區域名稱
用戶端程式庫
如要從程式碼部署新服務,請按照下列步驟操作:
REST API
如要部署新服務,請將 POST HTTP 要求傳送至 Cloud Run Admin API service 端點。
例如使用 curl:
curl -H "Content-Type: application/json" \ -H "Authorization: Bearer ACCESS_TOKEN" \ -X POST \ -d '{template: {containers: [{image: "IMAGE_URL"}]}}' \ https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/services?serviceId=SERVICE
更改下列內容:
- ACCESS_TOKEN:帳戶的有效存取權杖,該帳戶須具備部署服務的 IAM 權限。舉例來說,如果您已登入 gcloud,可以使用
gcloud auth print-access-token擷取存取權杖。在 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。- SERVICE:要部署的服務名稱。 服務名稱不得超過 49 個字元,且每個區域和專案的服務名稱不得重複。
- REGION:服務的 Google Cloud 區域。
- PROJECT-ID: Google Cloud 專案 ID。
Cloud Run 位置
Cloud Run 具有「地區性」,這表示執行 Cloud Run 服務的基礎架構位於特定地區,並由 Google 代管,可為該地區內所有區域提供備援功能。
選擇 Cloud Run 服務的執行地區時,請將延遲時間、可用性或耐用性需求做為主要考量。一般而言,您可以選擇最靠近使用者的區域,但您應考量 Cloud Run 服務所使用的其他 Google Cloud產品位置。使用分散在不同位置的 Google Cloud 產品,可能會影響服務的延遲時間和費用。
Cloud Run 可在下列地區使用:
採用級別 1 定價
asia-east1(臺灣)asia-northeast1(東京)asia-northeast2(大阪)asia-south1(印度孟買)asia-southeast3(曼谷)europe-north1(芬蘭)低二氧化碳排放2
europe-north2(斯德哥爾摩)二氧化碳排放量低
europe-southwest1(馬德里)二氧化碳排放量低
europe-west1(比利時)二氧化碳排放量低
europe-west4(荷蘭)二氧化碳排放量低
europe-west8(米蘭)europe-west9(巴黎)低二氧化碳排放2
me-west1(特拉維夫)northamerica-south1(墨西哥)us-central1(愛荷華州)