使用 Cloud Build 构建和推送 Docker 映像
了解如何通过构建 Docker 映像并将映像推送到 Artifact Registry 来开始使用 Cloud Build。Artifact Registry 提供用于管理私有软件包和 Docker 容器映像的单个位置。
您首先使用 Docker 配置文件 Dockerfile 构建映像,然后使用 Cloud Build 配置文件构建相同的映像。
如需遵循有关此任务的分步指导,请直接在 Cloud Shell Editor 中点击操作演示:
准备工作
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build, Compute Engine and Artifact Registry APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build, Compute Engine and Artifact Registry APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init -
Make sure that you have the following role or roles on the project: Artifact Registry Administrator, Cloud Build Editor, Logs Viewer, Service Account User, Service Usage Admin, Storage Bucket Viewer, Storage Object Creator
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
前往 IAM - 选择项目。
- 点击 授予访问权限。
-
在新的主账号字段中,输入您的用户标识符。 这通常是 Google 账号的电子邮件地址。
- 在选择角色列表中,选择一个角色。
- 如需授予其他角色,请点击 添加其他角色,然后添加其他各个角色。
- 点击 Save(保存)。
打开一个终端窗口。
创建名为
quickstart-docker的新目录并导航至该目录:mkdir quickstart-docker cd quickstart-docker创建名为
quickstart.sh且包含以下内容的文件:创建名为
Dockerfile且包含以下内容的文件:在终端窗口中运行以下命令,使
quickstart.sh成为可执行文件:chmod +x quickstart.sh在位置
us-west2中新建一个名为quickstart-docker-repo且说明文字为“Docker repository”(Docker 代码库)的 Docker 代码库:gcloud artifacts repositories create quickstart-docker-repo --repository-format=docker \ --location=us-west2 --description="Docker repository"验证您的代码库已创建:
gcloud artifacts repositories list您会在显示的代码库列表中看到
quickstart-docker-repo。通过运行以下命令获取 Google Cloud 项目 ID:
gcloud config get-value project从包含
quickstart.sh和Dockerfile的目录运行以下命令:gcloud builds submit --region=us-west2 --tag us-west2-docker.pkg.dev/PROJECT_ID/quickstart-docker-repo/quickstart-image:tag1在包含
quickstart.sh和Dockerfile的同一目录中,创建名为cloudbuild.yaml且包含以下内容的文件。此文件是您的构建配置文件。构建时,Cloud Build 会自动将$PROJECT_ID替换为您的项目 ID。通过运行以下命令启动构建:
gcloud builds submit --region=us-west2 --config cloudbuild.yaml在 Google Cloud 控制台中打开 Cloud Build 页面。
如有必要,请选择您的项目,然后点击打开。
您将看到构建记录页面:
如有必要,请在区域下拉菜单中选择
us-west2以查看该区域中的 build。系统会列出两个 build,分别对应您在本快速入门中执行的两个 build。
点击其中一个 build。
您将看到构建详情页面。
如需查看构建的工件,请点击构建摘要下的构建工件。
您将看到类似于以下内容的输出:
您可以从此页下载您的构建日志,并查看 Artifact Registry 中映像的详情。
在 Google Cloud 控制台中打开 Artifact Registry 页面。
选择您的项目,然后点击打开。
选择 quickstart-docker-repo。
点击删除。
- 了解如何运行 Docker 映像。
- 了解如何创建基本 build 配置文件。
- 了解如何使用 Cloud Build 进行部署。
- 了解如何构建 Node.js 应用。
- 了解如何构建 Java 应用。
- 了解如何构建 Go 应用。
准备源文件以进行构建
您需要一些示例源代码来打包到容器映像中。在此部分,您将创建一个 shell 脚本和
Dockerfile。Dockerfile是文本文档,其中有 Docker 如何构建映像的说明。在 Artifact Registry 中创建 Docker 代码库
使用 Dockerfile 构建映像
Cloud Build 允许您使用
Dockerfile构建 Docker 映像。您不需要单独的 Cloud Build 配置文件。如需使用
Dockerfile构建,请执行以下操作:构建完成后,您将看到类似于以下内容的输出:
DONE ------------------------------------------------------------------------------------------------------------------------------------ ID CREATE_TIME DURATION SOURCE IMAGES STATUS 545cb89c-f7a4-4652-8f63-579ac974be2e 2020-11-05T18:16:04+00:00 16S gs://gcb-docs-project_cloudbuild/source/1604600163.528729-b70741b0f2d0449d8635aa22893258fe.tgz us-west2-docker.pkg.dev/gcb-docs-project/quickstart-docker-repo/quickstart-image:tag1 SUCCESS您刚刚使用
Dockerfile构建了一个名为quickstart-image的 Docker 映像,并将该映像推送到了 Artifact Registry。使用构建配置文件构建映像
在此部分,您将使用 Cloud Build 配置文件构建与上文相同的 Docker 映像。构建配置文件会指示 Cloud Build 根据您的规范执行任务。
构建完成后,您将看到类似于以下内容的输出:
DONE ------------------------------------------------------------------------------------------------------------------------------------ ID CREATE_TIME DURATION SOURCE IMAGES STATUS 046ddd31-3670-4771-9336-8919e7098b11 2020-11-05T18:24:02+00:00 15S gs://gcb-docs-project_cloudbuild/source/1604600641.576884-8153be22c94d438aa86c78abf11403eb.tgz us-west2-docker.pkg.dev/gcb-docs-project/quickstart-docker-repo/quickstart-image:tag1 SUCCESS您刚刚使用构建配置文件构建了
quickstart-image并将该映像推送到了 Artifact Registry。查看构建详情
清理
为避免因本页中使用的资源导致您的 Google Cloud 账号产生费用,请按照以下步骤操作。
您现在已经删除了在此快速入门中创建的代码库。
后续步骤
-