透過原始碼部署

本頁面說明如何使用單一 gcloud CLI 指令 (gcloud run deploy) 搭配 --source 標記,直接從原始碼部署新服務和新修訂版本至 Cloud Run。如需部署 Hello World 服務的示範,請參閱「從來源快速入門部署」。

在幕後,這個指令會使用 Google Cloud 的 Buildpacks 和 Cloud Build,自動從原始程式碼建構容器映像檔,而不需要在電腦上安裝 Docker 或設定 Buildpacks 或 Cloud Build。也就是說,上述單一指令可執行 gcloud builds submitgcloud run deploy 指令才能執行的操作。

請注意,來源部署作業會使用 Artifact Registry 儲存已建構的容器。如果您的專案在要部署的區域中,尚未有名稱為 cloud-run-source-deploy 的 Artifact Registry 存放區,這項功能會自動建立名稱為 cloud-run-source-deploy 的 Artifact Registry 存放區。

如果來源碼目錄中含有 Dockerfile,系統會使用該 Dockerfile 建構已上傳的原始碼。如果原始碼目錄中沒有 Dockerfile,Google Cloud 的 Buildpacks 會自動偵測您使用的語言,並擷取程式碼的依附元件,以便使用 Google 管理的安全基礎映像檔,建立可用於正式環境的容器映像檔。

根據預設,安全性修正程式只會在服務部署時套用。為服務啟用自動安全性更新功能後,該服務會自動接收修補程式,完全不需停機。進一步瞭解如何設定安全性更新

支援的語言

除了含有 Dockerfile 的來源之外,從來源部署也支援下列語言:

進一步瞭解支援的語言版本

這項功能的限制

  • 從來源部署會使用 Artifact Registry 和 Cloud Build,因此這項功能僅適用於 Artifact Registry 支援的區域Cloud Build
  • 使用 gcloud run deploy --source 從來源部署是便利功能,且不允許完全自訂建構。如要進一步控管,請使用 Cloud Build 建構容器映像檔 (例如使用 gcloud builds submit),然後部署容器映像檔 (例如使用 gcloud run deploy --image)。
  • 使用 Google Cloud 的 Buildpack 從原始檔案部署時,會將原始檔案的上次修改日期設為 1980 年 1 月 1 日。這是 Buildpack 的預設行為,旨在支援可重現的建構作業。視語言架構而定,這可能會影響瀏覽器端對靜態檔案的快取。如果您的應用程式受到這項變更影響,Google 建議您在應用程式中停用 etagLast-Modified HTTP 標頭。
  • 使用 Google Cloud 的 Buildpacks 從來源部署時,一律會使用 gcr.io/buildpacks/builder:latest。如果 latest 中沒有您偏好的語言或作業系統設定,請使用特定建構工具,透過您偏好的建構工具建立應用程式映像檔。
  • 您可以使用 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 Build 服務帳戶的必要角色

除非您覆寫這項行為,否則 Cloud Build 會自動使用 Compute Engine 預設服務帳戶做為預設 Cloud Build 服務帳戶,以便建構您的原始碼和 Cloud Run 資源。如要讓 Cloud Build 建構來源,請要求管理員將 Cloud Run 建構工具 (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 替換為您的 Google Cloud專案編號,並將 PROJECT_ID 替換為您的 Google Cloud專案 ID。如需查看如何找出專案 ID 和專案編號的詳細操作說明,請參閱「建立及管理專案」。

將 Cloud Run 建構工具角色授予 Compute Engine 預設服務帳戶後,需要幾分鐘的時間才能套用

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

部署中

如要透過原始碼部署,請按照下列步驟操作:

  1. 切換至來源目錄。請注意,來源目錄不需要 Dockerfile,但如果有 Dockerfile,系統會使用 Dockerfile。

  2. 建構及部署應用程式:

    gcloud run deploy SERVICE --source .

    SERVICE 替換為您想要用於服務的名稱。

    您可以選擇使用支援的語言執行階段之一,並為執行階段設定自動更新基本映像檔。如果您選擇這������,請������ --automatic-updates 旗標和 --base-image 旗標,並加上服務的基本映像檔,例如 nodejs22

    如有安裝必要 API 的提示,請在提示時回應 y。您只需要為專案執行這項操作一次。如果您未按照設定頁面所述設定預設值,請提供平台和區域來回應其他提示。

  3. 等候建構及部署作業完成。完成後,系統會顯示類似以下的訊息:

    Service [my-app] revision [my-app-00000-xxx] has been deployed and is serving 100 percent of traffic. Service URL: https://my-app-texampleq-uc.a.run.app

    請注意,在部署後,這個服務修訂版本會處理 100% 的流量。

自動化從原始碼進行建構

為避免在本機來源中發生未經版本控制的變更,Google 建議您在變更推送至 Git 存放區時自動部署。為簡化這項作業,您可以連結並設定持續部署至 Cloud Run 服務。只要將 GitHub 存放區連結至 Cloud Run,您就能設定建構作業並部署存放區,而無須撰寫 Dockerfile 或建構檔案。

如要設定自動化建構作業,請按照持續建構作業頁面所述設定自動化功能,並務必選擇使用 Buildpack 建構原始碼的選項。

後續步驟

您在部署新服務後,可以進行下列作業:

瞭解來源部署設定:

您可以使用 Cloud Build 觸發條件自動執行 Cloud Run 服務的建構和部署作業: