构建容器

Cloud Run 接受使用任何能够构建容器映像的工具而构建的容器映像,前提是它们遵循容器合同。 需要特别指出的是,您的代码必须监听 PORT 环境变量所定义端口上的 HTTP 请求。Cloud Run 会将此 PORT 环境变量自动注入您的容器中。

本页面介绍了几种构建容器映像的方法:

  • 使用 Dockerfile
  • 使用 Google Cloud 的 Buildpack

准备工作

使用 Dockerfile 构建

在使用 Docker 或 Cloud Build 将来源在本地构建到容器映像(即进行“容器化”)之前,您需要确保来源中存在一个 DockerfileHello World 示例包含采用多种主流语言编写的示例应用和 Dockerfile。

如果您使用 Dockerfile,则可以使用以下任一方法进行构建:

  • 使用 Cloud Build 构建
  • 使用 Docker 在本地构建

使用 Cloud Build 构建

您可以使用 Cloud Build 在 Google Cloud 上构建映像:

  1. 导航到包含来源和 Dockerfile 的文件夹。

  2. 运行以下命令:

    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 构建容器映像,请执行以下操作:

  1. 导航到包含来源和 Dockerfile 的文件夹。

  2. 运行以下命令:

    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

  3. 将容器映像推送到受支持的容器注册表:

    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,用于将源代码构建到专门在 Google Cloud 容器平台(包括 Cloud Run)上运行的容器映像中。

如需查看支持的语言列表,请参阅 Google Cloud 的 Buildpack 文档

使用 Cloud Build 通过 Google Cloud 的 Buildpack 进行构建

如需使用 Google Cloud 的 Buildpack 进行构建,请执行以下操作:

  1. 导航到包含来源的文件夹。

  2. 运行以下命令:

    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

  3. 等待构建完成。

使用 pack 命令行通过 Google Cloud 的 Buildpack 进行构建

如需使用 pack 命令进行构建,请执行以下操作:

  1. 如果您尚未安装 Docker,请执行此操作。

  2. 如果您尚未安装 pack,请执行此操作。

  3. 导航到包含来源的文件夹。

  4. 运行以下命令来进行构建并推送到受支持的容器注册表:

    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

  5. 等待 pack 完成。

如需了解详情,请参阅构建应用下的说明。

后续步骤

  • 构建容器后,在将容器部署到 Cloud Run 之前,您可以先在本地进行测试:如需了解详情,请参阅在本地测试 Cloud Run 服务
  • 如需详细了解容器在部署到 Cloud Run 时必须遵循的合同,请参阅容器合同
  • 如需将构建的容器部署到 Cloud Run,请按照部署服务中的说明操作。
  • 如需使用 Cloud Build 触发器实现 Cloud Run 服务的自动构建和部署,请设置持续部署
  • 如需为 Java 应用执行最佳容器构建,请参阅使用 Jib 构建 Java 容器