本頁說明如何使用以 Compose 規格為基礎的檔案,將服務部署到 Cloud Run。
您可以使用下列方式,透過 Compose 檔案部署至 Cloud Run:
使用 Compose 部署至 Cloud Run 非常適合開發,且可簡化從本機環境到雲端環境的轉換。可讓您為本機和已部署的應用程式維持一致的設定格式。
如要在基礎架構即程式碼 (IaC) 環境中管理實際工作環境,建議使用 Terraform。
限制
- Compose 部署作業會部署具有多個容器的單一 Cloud Run 服務。
- Compose 部署作業只會轉譯部分支援的 Cloud Run 功能。
- 使用 Compose 建立的服務預設會設為最多 1 個執行個體。
- 雖然 Cloud Run Compose 部署作業簡化了部署程序,但無法取代生產環境的完整基礎架構即程式碼策略。
使用 Compose 從容器映像檔部署服務
在 compose.yaml 檔案中定義服務,並從現有的容器映像檔部署服務。詳情請參閱「部署容器映像檔」。
範例:單一服務應用程式
以下範例顯示使用預先建構容器映像檔的網路服務 compose.yaml 檔案。
services:
web:
image: us-docker.pkg.dev/cloudrun/container/hello
ports:
- "8080:8080"
部署服務
如要部署服務,請執行
gcloud beta run compose up指令:gcloud beta run compose up compose.yaml回應
y安裝必要元件或啟用 API 的任何提示。選用:公開發布服務,允許未經驗證的存取要求。
部署完成後,畫面會顯示 Cloud Run 服務網址。複製這個網址並貼到瀏覽器,即可查看正在執行的容器。您可以在 Google Cloud 控制台停用預設驗證。
使用 Compose 從來源部署
在 compose.yaml 檔案中定義服務,然後從原始碼建構並部署服務。詳情請參閱「從原始碼部署服務」。
範例:單一服務應用程式
以下範例顯示從目前目錄中的來源建構的 Web 服務 compose.yaml 檔案。
services:
web:
build: .
ports:
- "8080:8080"
部署服務
在專案目錄中,建立包含服務定義的
compose.yaml檔案。如要部署服務,請執行
gcloud beta run compose up指令:gcloud beta run compose up compose.yaml回應所有提示,安裝必要元件或啟用 API。
y選用:公開發布服務,允許未經驗證的存取權。
部署完成後,畫面會顯示 Cloud Run 服務網址。複製這個網址並貼到瀏覽器,即可查看正在執行的容器。您可以在 Google Cloud 控制台停用預設驗證。
支援功能
使用 compose.yaml 檔案部署時,Cloud Run 會自動佈建 Compose 檔案中定義的其他 Google Cloud 資源。如果需要資源,Cloud Run 會先提示您同意,再建立資源。
Cloud Run 支援下列 Compose 功能子集:
| 撰寫欄位 | Cloud Run 對應和說明 |
|---|---|
services |
服務會對應至已部署 Cloud Run 服務中的個別容器。 |
volumes |
部分支援。將 |
secrets |
支援。使用 Secret Manager。 |
configs |
支援。使用 Cloud Storage。 |
build |
Cloud Build 會使用建構內容建構容器,並標記及推送至 Artifact Registry 中的 |
image |
從支援的登錄檔部署預先建構的容器映像檔。如果您有預先建立的映像檔,請使用這個選項。僅支援 Docker Hub 和 Artifact Registry 映像檔。如要使用自訂映像檔,可以將映像檔推送至 Artifact Registry。 |
ports |
通訊埠對應清單,例如 |
expose |
要公開但不發布的通訊埠清單,例如 |
depends_on |
定義容器啟動順序。這可確保任何 |
cpu_count/cpus |
用來設定 Cloud Run CPU 和記憶體限制的提示,系統會根據下列邏輯自動分配資源:
|
container_name |
設定容器的依附元件解析名稱,如未指定,預設為服務名稱。 |
environment |
將環境變數傳遞至 Cloud Run 中的對應容器。 |
command |
透過對應至 Cloud Run 中的 |
entrypoint |
支援。 |
env_file |
支援。 |
x-google-cloudrun:ingress-container |
(擴充功能) 將這項 Google 專屬擴充功能新增至服務,並設為 |
x-google-cloudrun:volume-type: in-memory |
(擴充功能) 將這個 Google 專屬擴充功能新增至磁碟區,並設為 |
對應至 Secret Manager 的密鑰
如果 compose.yaml 檔案定義 secrets,gcloud CLI 會佈建 Secret Manager 密鑰來儲存這項資料。
對應至 Cloud Storage 的磁碟區和設定
如果 compose.yaml 檔案定義了頂層 volumes 或 configs,gcloud CLI 會佈建 Cloud Storage 值區來管理這項資料。每個部署作業都會建立一個值區,並使用資料夾分隔磁碟區和設定。
- 具名磁碟區:系統會在值區中建立與磁碟區名稱對應的空白資料夾。
- 繫結掛接:如果是繫結掛接,Cloud Run 會先將本機來源目錄的內容上傳至 bucket 中的資料夾,再進行部署。
- 設定:對於以
file:來源定義的每個設定,Cloud Run 會將本機檔案的內容上傳至儲存空間的資料夾。
必要的角色
部署期間,Cloud Run 會自動授予已部署服務的服務身分,存取已佈建資源所需的角色:
- Cloud Storage Bucket:
roles/storage.objectUser - Secret Manager 密鑰:
roles/secretmanager.secretAccessor
同一執行個體的容器之間通訊
Cloud Run 會在每個容器的 /etc/hosts 檔案中新增項目。這個項目會將 compose.yaml 檔案中的服務名稱對應至內部 IP 位址,讓服務能使用服務名稱彼此通訊。