Cloud Run 支持直接部署源代码,不过您也可以先将源代码构建为容器映像,再部署至 Cloud Run。您可以将容器映像用于任何 Cloud Run 资源。
构建与部署操作解耦的常见用例:
- 持续集成和交付:开发者编写代码并推送到源代码库,CI/CD 系统会自动将其构建为容器映像、运行测试,并部署到预演环境。
- 基础设施即代码:使用 YAML 或 Terraform 管理的 Cloud Run 资源会引用容器映像网址。开发者编写的源代码需要构建为容器映像。
您可以使用任意系统构建容器。本页面介绍了以下使用 Cloud Build 构建容器映像的方法:
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
您可以使用 gcloud CLI 凭据帮助程序配置 Docker 以访问 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 构建
您可以使用 Cloud Build 在 Google Cloud 上构建映像:
导航到包含来源和 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 的 Buildpack。
要使用 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 的 Buildpack 是一组与 CNCF 兼容的 Buildpack,可将源代码构建为容器映像,并在包括 Cloud Run 在内的 Google Cloud 容器平台上运行。
如需查看支持的语言列表,请参阅 Google Cloud 的 Buildpack 文档
使用 Cloud Build 搭配 Google Cloud 的 Buildpack 进行构建
如需使用 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 的 Buildpack 进行构建
如需使用 pack 命令进行构建,请执行以下操作:
如果您尚未安装 Docker,请执行此操作。
如果您尚未安装
pack
,请执行此操作。导航到包含来源的文件夹。
运行以下命令来进行构建并推送到受支持的容器注册表:
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 触发器实现 Cloud Run 服务的自动构建和部署,请设置持续部署。
如需为 Java 应用执行最佳容器构建,请参阅使用 Jib 构建 Java 容器。