cloud-run-basics

cloud-run-basics

熱門

管理 Cloud Run 服務、任務與工作者集區。當您需要部署回應 HTTP 請求的應用程式(服務)、執行事件觸發或排程任務(任務),或處理常駐的拉取式背景處理(工作者集區)時使用。

1.5萬星標
1201分支
更新於 2026/7/29
SKILL.md
唯讀
名稱
cloud-run-basics
描述

管理 Cloud Run 服務、任務與工作者集區。當您需要部署回應 HTTP 請求的應用程式(服務)、執行事件觸發或排程任務(任務),或處理常駐的拉取式背景處理(工作者集區)時使用。

Cloud Run 基礎

Cloud Run 是一個全託管的應用程式平台,可在 Google 高度可擴展的基礎架構上執行您的程式碼、函式或容器。它抽象化了基礎架構管理,提供三種主要資源類型:

  1. 服務: 回應傳送至唯一且穩定端點的 HTTP 請求,使用無狀態執行個體,並根據多種關鍵指標自動調整規模,同時也能回應事件和函式。
  2. 任務: 執行可並行化的任務,這些任務會手動執行或依排程執行,並執行至完成。
  3. 工作者集區: 處理常駐的背景工作負載,例如拉取式工作負載,例如 Kafka 消費者、Pub/Sub 拉取佇列或 RabbitMQ 消費者。

先決條件

  1. 啟用 Cloud Run Admin API 和 Cloud Build API:

    gcloud services enable run.googleapis.com cloudbuild.googleapis.com --quiet
    
  2. 如果您的專案受到網域限制的組織政策 限制 未經驗證的呼叫,您需要按照測試私人服務中的說明存取已部署的服務。

必要角色

您需要以下角色才能部署 Cloud Run 資源:

  • 專案的 Cloud Run 管理員 (roles/run.admin)
  • 專案的 Cloud Run 原始碼開發人員 (roles/run.sourceDeveloper)
  • 服務身分識別的服務帳戶使用者 (roles/iam.serviceAccountUser)
  • 專案的日誌檢視者 (roles/logging.viewer)

除非您覆寫此行為,否則 Cloud Build 會自動使用 Compute Engine 預設服務帳戶作為建構原始碼和 Cloud Run 資源的預設 Cloud Build 服務帳戶。

為了讓 Cloud Build 建構您的原始碼,請授予 Cloud Build 服務帳戶專案的 Cloud Run 建構者 (roles/run.builder) 角色:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:SERVICE_ACCOUNT_EMAIL_ADDRESS \
    --role=roles/run.builder \
    --quiet

PROJECT_ID 替換為您的 Google Cloud 專案 ID,並將 SERVICE_ACCOUNT_EMAIL_ADDRESS 替換為 Cloud Build 服務帳戶的電子郵件地址。

部署 Cloud Run 服務

您可以使用容器映像檔部署服務,或使用單一 Google Cloud CLI 命令直接從原始碼部署。

重要規則: 任何部署的程式碼都必須監聽 0.0.0.0(而非 127.0.0.1),並使用注入的 $PORT 環境變數(預設為 8080),否則會在啟動時崩潰。

部署容器映像檔到 Cloud Run

Cloud Run 在部署期間匯入您的容器映像檔。只要容器映像檔被服務版本使用,Cloud Run 就會保留此副本。當新的 Cloud Run 執行個體啟動時,不會從容器儲存庫中拉取容器映像檔。

支援的容器映像檔

您可以直接使用儲存在 Artifact RegistryDocker Hub 中的容器映像檔。Google 建議使用 Artifact Registry,因為 Docker Hub 映像檔會被快取最多一小時。

您可以透過設定 Artifact Registry 遠端儲存庫,使用來自其他公開或私人儲存庫(例如 JFrog Artifactory、Nexus 或 GitHub Container Registry)的容器映像檔。

您只應考慮使用 Docker Hub 部署熱門的容器映像檔,例如 Docker 官方映像檔Docker 贊助的 OSS 映像檔。為了提高可用性,Google 建議使用 Artifact Registry 遠端儲存庫 部署這些 Docker Hub 映像檔。

若要部署容器映像檔,請執行以下命令:

    gcloud run deploy SERVICE_NAME \
        --image IMAGE_URL \
        --region us-central1 \
        --allow-unauthenticated \
        --quiet

請替換以下內容:

  • SERVICE_NAME:您要部署的服務名稱。服務名稱必須為 49 個字元或更少,且在每個區域和專案中必須是唯一的。如果服務尚不存在,此命令會在部署期間建立服務。您可以完全省略此參數,但如果省略,系統會提示您輸入服務名稱。
  • IMAGE_URL:容器映像檔的參考,例如 us-docker.pkg.dev/cloudrun/container/hello:latest。如果您使用 Artifact Registry,則必須已建立儲存庫 REPO_NAME。URL 的格式為 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG。請注意,如果您未提供 --image 旗標,deploy 命令將嘗試從原始碼部署。

從原始碼部署

有兩種不同的方式可以從原始碼部署服務:

  • 從原始碼部署並建構(預設):此選項使用 Google Cloud 的 buildpacks 和 Cloud Build,自動從您的原始碼建構容器映像檔,而無需在您的機器上安裝 Docker 或設定 buildpacks 或 Cloud Build。預設情況下,Cloud Run 使用 Cloud Build 提供的預設機器類型。

    • 若要從原始碼部署並啟用自動基礎映像檔更新,請執行以下命令:

      gcloud run deploy SERVICE_NAME --source . \
      --base-image BASE_IMAGE \
      --automatic-updates \
      --quiet
      

      Cloud Run 僅支援使用 Google Cloud 的 buildpacks 基礎映像檔 的自動基礎映像檔。

      • 若要使用 Dockerfile 從原始碼部署,請執行以下命令:
       gcloud run deploy SERVICE_NAME --source . --quiet
      
      當您提供 Dockerfile 時,Cloud Build 會在雲端中執行它,並部署服務。
      
  • 從原始碼部署但不建構(預覽版):此選項直接將成品部署到 Cloud Run,跳過 Cloud Build 步驟。這可以實現快速的部署時間。若要從原始碼部署但不建構,請執行以下命令:

    gcloud beta run deploy SERVICE_NAME \
     --source APPLICATION_PATH \
     --no-build \
     --base-image=BASE_IMAGE \
     --command=COMMAND \
     --args=ARG \
     --quiet
    

    請替換以下內容:

    • SERVICE_NAME:您的 Cloud Run 服務名稱。
    • APPLICATION_PATH:您的應用程式在本機檔案系統中的位置。
    • BASE_IMAGE:您要為應用程式使用的執行階段基礎映像檔。例如,us-central1-docker.pkg.dev/serverless-runtimes/google-24-full/runtimes/nodejs24。您也可以使用僅限作業系統的基礎映像檔(例如 osonly24)部署預先編譯的二進位檔,而無需設定其他語言特定的執行階段元件。
    • COMMAND:容器啟動時執行的命令。
    • ARG:您傳送給容器命令的引數。如果您使用多個引數,請將每個引數指定在單獨的行上。

    如需從原始碼部署但不建構的範例,請參閱從原始碼部署但不建構的範例

建立並執行 Cloud Run 任務

若要建立新任務,請執行以下命令:

gcloud run jobs create JOB_NAME --image IMAGE_URL OPTIONS --quiet

或者,使用 deploy 命令:

gcloud run jobs deploy JOB_NAME --image IMAGE_URL OPTIONS --quiet

請替換以下內容:

  • JOB_NAME:您要建立的任務名稱。如果您省略此參數,執行命令時系統會提示您輸入任務名稱。

  • IMAGE_URL:容器映像檔的參考,例如 us-docker.pkg.dev/cloudrun/container/job:latest

  • 可選地,將 OPTIONS 替換為以下任何旗標:

    • --tasks:接受大於或等於 1 的整數。預設值為 1;最大值為 10,000。每個任務都會獲得環境變數 CLOUD_RUN_TASK_INDEX(值介於 0 到任務數減 1 之間)以及 CLOUD_RUN_TASK_COUNT(即任務數)。
    • --max-retries:失敗任務的重試次數。一旦任何任務超過此限制,整個任務就會被標記為失敗。例如,如果設定為 1,則失敗的任務將重試一次,總共嘗試兩次。預設值為 3。接受 0 到 10 的整數。
    • --task-timeout:接受持續時間,例如 "2s"。預設值為 10 分鐘;最大值為 168 小時(7 天)。對於使用 GPU 的任務,最大可用逾時為 1 小時。
    • --parallelism:可以並行執行的最大任務數。預設情況下,任務將盡快並行啟動。
    • --execute-now:如果設定,則在建立任務後立即開始執行任務。相當於依序呼叫 gcloud run jobs creategcloud run jobs execute

    除了上述選項之外,您還可以指定更多設定,例如環境變數或記憶體限制。

如需建立任務時可用選項的完整清單,請參閱 gcloud run jobs create 命令列文件。

等待任務建立完成。成功完成後,您會看到成功訊息。

若要執行現有任務,請執行以下命令:

gcloud run jobs execute JOB_NAME --quiet

如果您希望命令等待執行完成,請執行以下命令:

gcloud run jobs execute JOB_NAME --wait --region=REGION --quiet

請替換以下內容:

  • JOB_NAME:任務的名稱。
  • REGION:可以找到資源的區域。例如 europe-west1。或者,設定 run/region 屬性。

部署工作者集區

您可以使用容器映像檔部署 Cloud Run 工作者集區,或直接從原始碼部署。

部署容器映像檔

您可以指定帶有標籤(例如 us-docker.pkg.dev/my-project/container/my-image:latest)或確切摘要(例如 us-docker.pkg.dev/my-project/container/my-image@sha256:41f34ab970ee...)的容器映像檔。

支援的容器映像檔

您可以直接使用儲存在 Artifact RegistryDocker Hub 中的容器映像檔。Google 建議使用 Artifact Registry,因為 Docker Hub 映像檔會被快取最多一小時。

您可以透過設定 Artifact Registry 遠端儲存庫,使用來自其他公開或私人儲存庫(例如 JFrog Artifactory、Nexus 或 GitHub Container Registry)的容器映像檔。

您只應考慮使用 Docker Hub 部署熱門的容器映像檔,例如 Docker 官方映像檔Docker 贊助的 OSS 映像檔。為了提高可用性,Google 建議使用 Artifact Registry 遠端儲存庫 部署這些 Docker Hub 映像檔。

若要部署容器映像檔,請執行以下命令:

gcloud run worker-pools deploy WORKER_POOL_NAME --image IMAGE_URL --quiet

請替換以下內容:

  • WORKER_POOL_NAME:您要部署的工作者集區名稱。如果工作者集區尚不存在,此命令會在部署期間建立工作者集區。您可以完全省略此參數,但如果省略,系統會提示您輸入工作者集區名稱。

  • IMAGE_URL:包含工作者集區的容器映像檔參考,例如 us-docker.pkg.dev/cloudrun/container/worker-pool:latest。請注意,如果您未提供 --image 旗標,deploy 命令會嘗試從原始碼部署。

等待部署完成。成功完成後,Cloud Run 會顯示成功訊息以及已部署工作者集區的版本資訊。

從原始碼部署工作者集區

您可以使用單一 gcloud CLI 命令 gcloud run worker-pools deploy 搭配 --source 旗標,直接從原始碼將新的工作者集區或工作者集區版本部署到 Cloud Run。

如果您未提供 --image--source 旗標,deploy 命令預設會進行原始碼部署。

在幕後,此命令使用 Google Cloud 的 buildpacks 和 Cloud Build,自動從您的原始碼建構容器映像檔,而無需在您的機器上安裝 Docker 或設定 buildpacks 或 Cloud Build。預設情況下,Cloud Run 使用 Cloud Build 提供的預設機器類型。

若要從原始碼部署工作者集區,請執行以下命令:

gcloud run worker-pools deploy WORKER_POOL_NAME --source . --quiet

WORKER_POOL_NAME 替換為您想要的工作者集區名稱。

部署失敗時的處理方式:

  1. IAM/權限錯誤: 請參閱 iam-security.md
  2. 啟動時崩潰 / 健康檢查失敗: 立即使用 gcloud logging read "resource.labels.service_name=SERVICE_NAME" --limit=20 擷取日誌,以找出確切的執行階段錯誤。
  3. 原生相依性錯誤(Node/Python): 如果使用 --no-build,請切換為 --source .(Buildpacks),以便為 Linux 正確編譯原生擴充功能。

參考目錄

如果您需要這些參考資料中未提供的產品資訊,請使用 Developer Knowledge MCP 伺服器的 search_documents 工具。