为 gcloud 构建提交指定 Dockerfile

idr*_*mbi 11 docker gcloud kubernetes google-cloud-build

我了解gcloud使用源 ( .)根目录中指定的 Dockerfile作为命令: gcloud builds submit --tag gcr.io/[PROJECT_ID]/quickstart-image .

但我正在尝试指定用于构建映像的 Dockerfile,但我没有找到任何有关如何执行此操作的资源,我不知道这是否可行。

Daz*_*kin 10

指定 Dockerfile(即除了./Dockerfile)的唯一方法是创建cloudbuild.yaml每个 techtabu@。然后,此配置可以使用docker构建器并提供特定的 Dockerfile,即:

steps:
- name: "gcr.io/cloud-builders/docker"
  args:
  - build
  - "--tag=gcr.io/$PROJECT_ID/quickstart-image"
  - "--file=./path/to/YourDockerFile"
  - .
...
images:
- "gcr.io/$PROJECT_ID/quickstart-image"
Run Code Online (Sandbox Code Playgroud)

如果您愿意,您还可以指定一个替代名称而不是cloudbuild.yaml.

./Dockerfile假设可能是为了简化向 Cloud Build 的过渡。

我建议您切换到使用cloudbuild.yaml它提供的灵活性。


tec*_*abu 7

我不确定是否可以指定 Dockerfile,但可以使用cloudbuild.yamlfile。检查 gcloud文档。如果你想重命名这个文件,你可以使用config选项。

    gcloud builds submit --config cloudbuild.yaml .
Run Code Online (Sandbox Code Playgroud)

示例cloudbuild.yaml文件如下所示,

steps:
- name: 'gcr.io/cloud-builders/docker'
  args: [ 'build', '-t', 'gcr.io/$PROJECT_ID/quickstart-image', '.' ]
images:
- 'gcr.io/$PROJECT_ID/quickstart-image'
Run Code Online (Sandbox Code Playgroud)


Coc*_*oco 5

您可以通过替换.by很容易地做到这一点./path/to/YourDockerFile,因此gcloud命令将是:

gcloud builds submit --tag gcr.io/[PROJECT_ID]/quickstart-image ./path/to/YourDockerFile
Run Code Online (Sandbox Code Playgroud)

所以你不必为此使用 a cloudbuild.yaml

  • @ZaarHai 只需指定包含 dockerfile 的*目录*,*而不是*文件本身的路径 (12认同)
  • 这对我不起作用:`错误:(gcloud.builds.submit)本地文件 [{src}] 不是 .zip、.tgz、.gz` (5认同)
  • 这对我的用例并没有真正的帮助 - 我想要一个包含两个 dockerfile 的文件夹 - 一个用于开发(即运行单元测试),一个用于产品。最终使用 tar --transoform 。见下文。 (3认同)
  • 这适用于您对指定目录的构建上下文感到满意的情况。但是,对我来说,它需要来自 repo root,所以请使用上面的 @DazWilkin 答案 (2认同)