使用特定构建器

构建器是受版本控制的映像,其中包含创建可运行容器所需的所有组件。每个构建器都使用特定的操作系统发行版(例如 Ubuntu 22)作为基础映像,并支持多种编程语言版本。

如果您需要以下项目,则您可能需要自定义生成器的版本:

  • 仅在特定构建器版本中可用的特定于操作系统的依赖项。
  • 仅在特定构建器版本中可用的特定编程语言版本。

本地构建

对于本地构建,您必须已安装 Pack CLI 和 Docker。

准备工作

  1. 在工作站上安装 Docker 社区版 (CE)pack 会将 Docker 用作 OCI 映像构建器。
  2. 安装 Pack CLI
  3. 安装 Git 源代码控制工具以从 GitHub 获取示例应用。

使用 pack 指定构建器版本

您可以将 --builder 标志附加到 pack 命令,以指定要使用的构建器版本:

pack build SERVICE_IMAGE_NAME --builder=BUILDER_IMAGE_URL

您需要进行如下替换:

  • BUILDER_IMAGE_URL 替换为构建器的网址。示例:gcr.io/buildpacks/builder:google-22
  • SERVICE_IMAGE_NAME 替换为您为应用映像选择的名称。

如需详细了解 pack 命令,请参阅 CLI 文档

使用 project.toml 指定构建器版本

使用 pack 进行构建时,您可以使用 buildpack 项目描述符 (project.toml) 设置构建器

  1. 在应用根目录中,使用以下配置创建一个名为 project.toml 的文件:
    [build]
    builder = "BUILDER_IMAGE_URL"
  2. 通过运行“pack”命令构建您的应用:
    pack build SERVICE_IMAGE_NAME

您需要进行如下替换:

  • BUILDER_IMAGE_URL 替换为构建器的网址,例如 gcr.io/buildpacks/builder:google-22
  • SERVICE_IMAGE_NAME 替换为您为应用映像选择的名称。

远程构建

您可以在提交项目时附加 --pack 标志,将特定构建器与 Cloud Build 搭配使用。

准备工作

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Build and Artifact Registry APIs.

    Enable the APIs

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Make sure that billing is enabled for your Google Cloud project.

  9. Enable the Cloud Build and Artifact Registry APIs.

    Enable the APIs

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    gcloud init
  12. 确保您的 Google Cloud 项目有权访问容器映像仓库。

    如需配置对 Artifact Registry 中的 Docker 仓库的访问权限,请执行以下操作:

    1. 在 Google Cloud 项目的同一位置创建新的 Docker 仓库。
      gcloud artifacts repositories create REPO_NAME \
      --repository-format=docker \
      --location=REGION --description="DESCRIPTION"
      您需要进行如下替换:
      • REPO_NAME 替换为您为 Docker 仓库选择的名称。
      • REGION 替换为 Google Cloud 项目的位置或最接近该位置的位置。
      • DESCRIPTION 替换为您选择的说明。

      例如,如需在 us-west2 中创建具有说明“Docker 仓库”的 docker 仓库,请运行以下命令:

      gcloud artifacts repositories create buildpacks-docker-repo --repository-format=docker \
      --location=us-west2 --description="Docker repository"
    2. 验证您的代码库已创建:
      gcloud artifacts repositories list

      您应该会在列表中看到您为 Docker 仓库选择的名称。

使用特定构建器构建应用

  1. 使用 gcloud 将应用源代码提交到 Cloud Build:
    gcloud builds submit --pack builder=BUILDER_IMAGE_URL,image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/SERVICE_IMAGE_NAME

    您需要进行如下替换:

    • BUILDER_IMAGE_URL 替换为构建器的网址。 示例:gcr.io/buildpacks/builder:google-22
    • LOCATION 替换为容器仓库的区域名称。 示例:us-west2-docker.pkg.dev
    • PROJECT_ID 替换为您的 Google Cloud 项目的 ID。
    • REPO_NAME 替换为 Docker 仓库的名称。
    • SERVICE_IMAGE_NAME 替换为您创建的容器映像的名称。

    如需详细了解 submit 命令,请参阅 Cloud Build 文档

  2. 验证示例应用是否已成功发布到 REPO_NAME
    gcloud artifacts docker images list LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME

    您需要进行如下替换:

    • LOCATION 替换为容器仓库的区域名称。 示例:us-west2-docker.pkg.dev
    • PROJECT_ID 替换为您的 Google Cloud 项目的 ID。
    • REPO_NAME 替换为 Docker 仓库的名称。

使用 Cloud Run 从源代码部署

使用 Cloud Run 从源代码部署时,您可以使用 buildpack 项目描述符文件(例如 project.toml)设置构建器

  1. 在应用目录的根目录中初始化 project.toml 文件,并将以下配置粘贴到其中:
    [build]
    builder = "BUILDER_IMAGE_URL"
  2. 从源代码部署应用
    gcloud run deploy --source . SERVICE_IMAGE_NAME

您需要进行如下替换:

  • BUILDER_IMAGE_URL 替换为构建器的网址。示例:gcr.io/buildpacks/builder:google-22
  • SERVICE_IMAGE_NAME 替换为您创建的容器映像的名称。