Cloud Run 支援直接部署原始碼,但您也可以將原始碼建構為容器映像檔,然後將這個容器映像檔部署到 Cloud Run。您可以將容器映像檔用於任何 Cloud Run 資源。
將建構和部署作業分離的常見用途:
- 持續整合與推送軟體更新:開發人員撰寫程式碼並推送至來源存放區後,CI/CD 系統會自動將該原始碼建構為容器、執行測試,並自動部署至測試環境。
- 基礎架構即程式碼:使用 YAML 或 Terraform 管理的 Cloud Run 資源會參照容器映像檔 URL。開發人員編寫的原始碼必須建構為容器映像檔。
您可以使用任何系統建構容器。本頁說明如何透過下列方式使用 Cloud Build 建構容器映像檔:
Cloud Run 服務的規定
對於 Cloud Run 服務,只要是使用任何能建構容器映像檔的工具所建構,且遵守容器合約的容器映像檔,Cloud Run 就會接受。特別是,您的程式碼必須在 PORT
環境變數所定義的連接埠監聽 HTTP 要求。Cloud Run 會自動將這個 PORT
環境變數注入容器。
事前準備
您需要 Google Cloud CLI,才能執行本頁面中的部分指令。
在支援的容器登錄檔中建立存放區。如要建立 Artifact Registry 存放區,請執行下列指令:
gcloud artifacts repositories create REPOSITORY \ --repository-format=docker \ --location=LOCATION \ --description="DESCRIPTION" \ --immutable-tags \ --async
您可以設定 Docker,使用 gcloud CLI 憑證輔助程式存取 Artifact Registry:
將gcloud auth configure-docker LOCATION-docker.pkg.dev
LOCATION
替換為容器存放區的區域名稱,例如us-west2
。
使用 Dockerfile 建構
使用 Docker 或 Cloud Build 將來源建構到容器映像檔 (「容器化」) 之前,您必須備妥 Dockerfile 和來源。Hello World 範例提供使用多種主流語言的範例應用程式和 Dockerfile。
如果您使用 Dockerfile,可以透過下列任一方法建構:
- 使用 Cloud Build 建構
- 使用 Docker 在本機建構
使用 Cloud Build 建構
您可以在 Google Cloud 使用 Cloud Build 建構映像檔:
前往含有來源和 Dockerfile 的資料夾。
執行下列指令:
gcloud builds submit --tag IMAGE_URL
將 IMAGE_URL 替換為容器映像檔的參照,例如
us-docker.pkg.dev/cloudrun/container/hello:latest
。如果您使用 Artifact Registry,則必須先建立存放區 REPO_NAME。網址格式為LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
。
如要瞭解改善建構成效的秘訣,請參閱「加速版本建構」
在本機建構並使用 Docker 推送
如果您已在本機安裝 Docker,則可使用 docker build
來取代使用 Cloud Build 或 Google Cloud 的建構套件。
如何使用 Docker 建構容器映像檔:
前往含有來源和
Dockerfile
的資料夾。執行下列指令:
docker build . --tag IMAGE_URL
將 IMAGE_URL 替換為容器映像檔的參照,例如
us-docker.pkg.dev/cloudrun/container/hello:latest
。如果您使用 Artifact Registry,則必須先建立存放區 REPO_NAME。網址格式為LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
。請注意,如果您使用的是搭載 Apple 晶片的 Mac,則必須在指令列中指定
--platform linux/amd64
。將容器映像檔推送到支援的容器登錄檔:
docker push IMAGE_URL
將 IMAGE_URL 替換為容器映像檔的參照,例如
us-docker.pkg.dev/cloudrun/container/hello:latest
。如果您使用 Artifact Registry,則必須先建立存放區 REPO_NAME。網址格式為LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
。
如要將本機檔案排除在這個程序之外,請按照 .dockerignore
設定檔的操作說明進行。
使用 Google Cloud 的 Buildpack 建構
Google Cloud 的 Buildpacks 是一組與 CNCF 相容的 Buildpacks,可將原始碼建構為容器映像檔,以便在 Google Cloud 容器平台 (包括 Cloud Run) 上執行。
如需支援的語言清單,請參閱 Google Cloud 的建構包說明文件
使用 Cloud Build,透過 Google Cloud 的建構包建構應用程式
如要使用 Google Cloud 的 Buildpack 建構應用程式,請按照下列步驟操作:
前往含有來源的資料夾。
執行下列指令:
gcloud builds submit --pack image=IMAGE_URL
將 IMAGE_URL 替換為容器映像檔的參照,例如
us-docker.pkg.dev/cloudrun/container/hello:latest
。如果您使用 Artifact Registry,則必須先建立存放區 REPO_NAME。網址格式為LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
。等待建構作業完成。
使用 pack
指令列,透過 Google Cloud 的 Buildpacks 建構應用程式
如要使用 pack 指令建構:
如果尚未安裝 Docker,請先安裝。
如果尚未安裝
pack
,請先安裝。前往含有來源的資料夾。
執行下列指令,建構並推送至支援的 Container Registry:
pack build --publish IMAGE_URL
將 IMAGE_URL 替換為容器映像檔的參照,例如
us-docker.pkg.dev/cloudrun/container/hello:latest
。如果您使用 Artifact Registry,則必須先建立存放區 REPO_NAME。網址格式為LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
。等待
pack
完成。
詳情請參閱「建構應用程式」一節的說明。
後續步驟
如要將您建構的容器部署到 Cloud Run,請參照部署服務的說明。
瞭解如何使用建構的容器映像檔建立及更新 Cloud Run 工作。
建構容器後,您可以先在本機測試,再部署至 Cloud Run;詳情請參閱「在本機測試 Cloud Run 服務」。
如要使用 Cloud Build Triggers 來自動執行 Cloud Run 服務的建構和部署作業,請設定持續部署。
如要為 Java 應用程式執行最佳容器建構作業,請參閱「使用 Jib 建構 Java 容器」。