构建容器

Knative serving 接受使用任何能够 构建容器映像,前提是它们遵循容器协定。 需要特别指出的是,您的代码必须侦听 PORT 环境变量所定义端口上的 HTTP 请求。此 PORT 环境变量 由 Knative serving 自动注入到容器中

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

  • 使用 Dockerfile
  • 使用 Buildpack

使用 Dockerfile 构建

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

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

使用 Cloud Build 构建

如需在 Google Cloud 上构建映像,请执行以下操作:

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

  2. 运行以下命令:

    gcloud builds submit --tag IMAGE_URL

    IMAGE_URL 替换为对容器映像的引用,例如 gcr.io/cloudrun/hello

如需详细了解 Cloud Build 说明,请参阅 部署到 Knative serving

有关提高构建性能方面的提示,请参阅加速构建

在本地使用 Docker 构建和推送

如果您在本地安装了 Docker,则可以使用 docker build 而不是使用 Cloud Build 或 Buildpack。

在使用 Docker 将来源构建到容器映像(“容器化”)之前,您需要确保来源中存在一个 Dockerfile。以下说明使用 Container Registry 作为映像仓库。

要使用 Docker 构建容器映像,请执行以下操作:

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

  2. 运行以下命令:

    docker build . --tag IMAGE_URL

    IMAGE_URL 替换为对容器映像的引用,例如 gcr.io/cloudrun/hello

  3. 如果您尚未将 Docker 配置为使用 Google Cloud CLI 来对发送到 Container Registry 的请求进行身份验证,请立即使用以下命令执行此操作:

    gcloud auth configure-docker

    您必须执行此操作,然后才能使用 Docker 推送或拉取映像。该操作只需执行一次。

  4. 将容器映像推送到 Container Registry:

    docker push IMAGE_URL

    IMAGE_URL 替换为对容器映像的引用,例如 gcr.io/cloudrun/hello

要从此过程中排除本地文件,请按照 .dockerignore 配置文件 instructions.

使用 Buildpack 构建

如需了解 Buildpack 的完整信息,请参阅 Buildpack 网站。 Google 提供了一系列 与 CNCF 兼容的 Buildpack 用于将源代码构建到 包括 Knative serving。

目前支持以下平台:

  • Go
  • Node.js
  • Python
  • Java
  • .NET Core

使用 Cloud Build 和 Buildpack 进行构建

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

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

  2. 运行以下命令:

    gcloud builds submit --pack image=IMAGE_URL

    IMAGE_URL 替换为容器映像网址,例如 gcr.io/myproject/myservice

  3. 等待构建完成。

使用 pack 命令行和 Buildpack 进行构建

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

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

  2. 如果您尚未将 Docker 配置为使用 Google Cloud CLI 来对发送到 Container Registry 的请求进行身份验证,请立即使用以下命令执行此操作:

    gcloud auth configure-docker

    您必须执行此操作,然后才能使用 Docker 推送或拉取映像。该操作只需执行一次。

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

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

  5. 运行以下命令来构建并推送到 Container Registry:

    pack build --publish IMAGE_URL

    IMAGE_URL 替换为对容器映像的引用,例如 gcr.io/cloudrun/hello

  6. 等待 pack 完成。

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

后续步骤

  • 如需详细了解容器在部署时必须遵守的合同 到 Knative serving,请参阅 容器合同

  • 如需将构建的容器部署到 Knative serving,请按照下列步骤操作: 部署服务

  • 自动构建和部署 Knative serving 使用 Cloud Build 触发器 设置持续部署