Google cloud platform Dockerfile是Google容器生成器所必需的还是cloudbuild.yaml应该涵盖所有用例?

Google cloud platform Dockerfile是Google容器生成器所必需的还是cloudbuild.yaml应该涵盖所有用例?,google-cloud-platform,google-kubernetes-engine,Google Cloud Platform,Google Kubernetes Engine,假设所有容器构建都发生在GoogleContainerBuilder(GCB)上的工作流,Dockerfile是否必要 例如,为了构建自定义容器,我们希望在其中安装一些包或从本地文件系统复制文件,我看到大多数示例GCB仍然使用Dockerfile(例如)-这是因为无法使用cloudbuild.yaml吗?最简单的合成Docker容器映像的工具仍然是将Docker build命令与Dockerfile一起使用。在源代码的根目录中使用Dockerfile的单个步骤中有cloudbuild.yaml文

假设所有容器构建都发生在GoogleContainerBuilder(GCB)上的工作流,Dockerfile是否必要


例如,为了构建自定义容器,我们希望在其中安装一些包或从本地文件系统复制文件,我看到大多数示例GCB仍然使用Dockerfile(例如)-这是因为无法使用cloudbuild.yaml吗?

最简单的合成Docker容器映像的工具仍然是将
Docker build
命令与
Dockerfile
一起使用。在源代码的根目录中使用
Dockerfile
的单个步骤中有
cloudbuild.yaml
文件是非常常见的,如下所示:

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
docker build
步骤之前或之后执行其他操作。例如,如果您想创建一个二进制文件而不将SDK打包到最终映像中,那么使用
cloudbuild.yaml
就很容易做到这一点。或者,如果您想使用
gsutil
从云存储中提取一些额外的资产

容器生成器还允许您构建和推送任意数量的图像,所有这些图像都与git repo的同一提交相关联(它们也可以在图像标记中包含提交sha),方法是运行许多步骤
docker build
。您甚至可以并行运行这些构建


有关如何为任意内容添加步骤,请参阅。

我在我的
Dockerfile
中使用
RUN npm RUN build:ssr
,然后可以在
Dockerfile
中成功访问创建的目录
dist/browser
,但是当我试图从
cloudbuild.yaml
部署
dist/browser
目录时,该目录不存在。他们有不同的范围吗?我还为此提出了一个问题