本頁說明如何使用單一 gcloud CLI 指令,直接從原始碼將新服務或服務修訂版本部署到 Cloud Run,
gcloud run deploy
並搭配 --source
旗標。如需部署 Hello World 服務的範例逐步說明,請參閱從來源部署快速入門。
在幕後,這項指令會使用 Google Cloud 的 Buildpacks 和 Cloud Build,從您的原始碼自動建構容器映像檔,而不必在機器上安裝 Docker,或設定 Buildpacks 或 Cloud Build。也就是說,上述單一指令會執行原本需要 gcloud builds submit
和 gcloud run deploy
指令才能完成的作業。
請注意,來源部署會使用 Artifact Registry 儲存建構的容器。如果專案在您要部署的區域中,還沒有名為 cloud-run-source-deploy
的 Artifact Registry 存放區,這項功能會自動建立名為 cloud-run-source-deploy
的 Artifact Registry 存放區。
如果來源碼目錄中存在 Dockerfile,系統會使用該 Dockerfile 建構上傳的來源碼。如果原始碼目錄中沒有 Dockerfile,Google Cloud 的 Buildpacks 會自動偵測您使用的語言,並擷取程式碼的依附元件,使用 Google 管理的安全基礎映像檔,製作可用於正式環境的容器映像檔。
根據預設,只有在部署 Cloud Run 服務時,系統才會套用安全性修正程式。為服務啟用自動安全性更新後,該服務就會自動接收修補程式,完全不需要停機。進一步瞭解如何設定安全性更新。支援的語言
除了含有 Dockerfile 的來源,從來源部署也支援下列語言:
進一步瞭解支援的語言版本。這項功能的限制
- 從來源部署功能會使用 Artifact Registry 和 Cloud Build,因此這項功能僅適用於 Artifact Registry 支援的區域和 Cloud Build。
- 從來源部署是便利功能,無法完全自訂建構作業。如要進一步控管,請使用 Cloud Build 建構容器映像檔 (例如使用
gcloud builds submit
),然後使用gcloud run deploy --image
等工具部署容器映像檔。 - 使用 Google Cloud 的建構包從來源部署時,來源檔案的上次修改日期會設為 1980 年 1 月 1 日。這是建構套件的預設行為,旨在支援可重現的建構作業。視您的語言架構而定,這可能會影響瀏覽器端靜態檔案的快取。如果您的應用程式受到影響,Google 建議在應用程式中停用
etag
和Last-Modified
HTTP 標頭。 - 使用 Google Cloud 的建構套件從來源部署時,一律會使用
gcr.io/buildpacks/builder:latest
。 如果latest
未提供您偏好的語言或 OS 設定,請使用特定建構工具,透過偏好的建構工具建立應用程式映像檔。 您可以使用 Kotlin 和其他 JVM 語言 (例如 Java) 從來源部署服務。使用的語言必須符合下列規則:
- 您可以使用 Maven 或 Gradle 建構應用程式。
- 建構檔案包含產品類別所需的所有外掛程式。
事前準備
- 請確認您已按照設定頁面所述,為 Cloud Run 設定新專案。
啟用 Cloud Run Admin API 和 Cloud Build API:
gcloud services enable run.googleapis.com \ cloudbuild.googleapis.com
啟用 Cloud Run Admin API 後,系統會自動建立 Compute Engine 預設服務帳戶。
必要的角色
您或管理員必須將下列 IAM 角色授予部署者帳戶和 Cloud Build 服務帳戶。
按一下即可查看部署者帳戶的必要角色
如要取得從來源建構及部署所需的權限,請要求管理員授予下列 IAM 角色:
- 專案的 Cloud Run 原始碼開發者 (
roles/run.sourceDeveloper
) - 專案的服務使用情形消費者 (
roles/serviceusage.serviceUsageConsumer
) - Cloud Run 服務身分的服務帳戶使用者 (
roles/iam.serviceAccountUser
)
按一下即可查看 Cloud Build 服務帳戶的必要角色
除非您覆寫這項行為,否則 Cloud Build 會自動使用 Compute Engine 預設服務帳戶做為預設的 Cloud Build 服務帳戶,建構您的原始碼和 Cloud Run 資源。如要讓 Cloud Build 建構來源,請要求管理員將 Cloud Run Builder (roles/run.builder
) 授予專案中的 Compute Engine 預設服務帳戶:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/run.builder
請將 PROJECT_NUMBER
替換為專案編號,並將 PROJECT_ID
替換為專案 ID。 Google CloudGoogle Cloud如需如何找出專案 ID 和專案編號的詳細操作說明,請參閱「建立及管理專案」。
將 Cloud Run 建構者角色授予 Compute Engine 預設服務帳戶後,需要幾分鐘才能傳播。
如需與 Cloud Run 相關聯的 IAM 角色和權限清單,請參閱 Cloud Run IAM 角色和 Cloud Run IAM 權限。如果 Cloud Run 服務與Google Cloud API (例如 Cloud 用戶端程式庫) 介接,請參閱服務身分設定指南。 如要進一步瞭解如何授予角色,請參閱部署權限和管理存取權。
從來源部署
如要透過原始碼部署:
變更為來源目錄。請注意,來源目錄不需要 Dockerfile,但如果存在 Dockerfile,系統就會使用。
建構及部署服務:
將gcloud run deploy SERVICE --source .
SERVICE
替換為您要為服務指定的名稱。如果您的原始碼使用支援的語言執行階段,且您想為執行階段設定自動更新基本映像檔,請指定
--automatic-updates
旗標和--base-image
旗標,並為服務提供基本映像檔,例如nodejs22
。系統會提示您安裝必要 API,請在收到提示時輸入
y
。這項操作只需要為專案執行一次。如果尚未如設定頁面所述,為平台和區域設定預設值,請提供這些資訊,回應其他提示。等待建構及部署作業完成。完成後,Cloud Run 會顯示成功訊息。
自動從來源建構
為避免本機來源中出現未納入版本的變更,Google 建議您在變更推送至 Git 存放區時,自動部署這些變更。為簡化這項作業,您可以連結及設定 Cloud Run 服務的持續部署作業。將 GitHub 存放區連結至 Cloud Run 後,您就能設定建構作業並部署存放區,不必編寫 Dockerfile 或建構檔案。
如要設定自動建構,請按照持續建構頁面所述設定自動化,並務必選擇使用建構套件建構來源的選項。後續步驟
部署 Cloud Run 服務後,您可以執行下列作業:
瞭解來源部署設定:
您可以使用 Cloud Build 觸發條件,自動執行 Cloud Run 服務的建構和部署作業: