假设所有容器构建都在Google容器生成器(GCB)上进行的工作流程,甚至还需要Dockerfile吗?
例如,要构建自定义容器,我们希望安装一些软件包或从本地文件系统复制文件,我看到大多数示例GCB仍在使用Dockerfile(例如https://github.com/GoogleCloudPlatform/cloud-builders) - 这是因为它无法使用cloudbuild.yaml?
答案 0 :(得分:2)
构建Docker容器映像的最简单工具仍然是使用带有docker build
的{{1}}命令。如果Dockerfile
文件只有一个步骤,使用源代码根目录中的cloudbuild.yaml
,就会非常常见,如下所示:
Dockerfile
因此,为了构建最终的容器图像,建议使用steps:
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/${PROJECT_ID}/my-image', '.']
images: ['gcr.io/${PROJECT_ID}/my-image']
和docker build
。例如,它可以让您轻松安装依赖包。
您可以在Dockerfile
步骤之前或之后使用cloudbuild.yaml
执行其他操作。例如,如果您想创建二进制文件而不将SDK打包到最终图像中,则可以使用docker build
轻松完成此操作。或者,如果您想使用cloudbuild.yaml
从云存储中提取一些额外资产。
容器构建器还允许您构建和推送任意数量的图像,所有图像都与git repo的相同提交相关(并且它们也可以包含图像标记中的提交sha),其中包含许多运行步骤{ {1}}。您甚至可以并行运行这些构建。
有关如何为任意事物添加步骤,请参阅https://cloud.google.com/container-builder/docs/api/build-steps。