首页 > 解决方案 > Concourse 从 git repo 构建 docker-image 复制

问题描述

我正在尝试使用 Concourse 管道来提取 git repo,然后从 git repo 中的 dockerfile 构建/推送 Docker 映像。dockerfile 中有一个 COPY 命令,用于将文件从 repo 复制到映像中。通常我会安装一个卷以便能够在构建时复制这些文件,但在 Concourse 中找不到这样做的方法。这是我正在尝试的:

# pipeline.yml
resources:  
  - name: git-repo
    type: git
    source:
      uri: <the-git-url>
      branch: master
      private_key: ((source-git-ssh-key))
  - name: my-image
    type: docker-image
    source:
      repository: gcr.io/path_to_image
      username: _json_key
      password: ((gcp-credential))

jobs:
  ...
      - get: git-repo
        trigger: true
      - put: my-image
        params:
          build: git-repo/compose



# dockerfile located at git-repo/compose/Dockerfile
FROM ...
...
# git-repo/scripts/run-script.sh
COPY scripts/run-script.sh /
...

如何在构建时将文件 git-repo/scripts/run-script.sh 复制到我的映像中?谢谢你。

标签: dockerdockerfileconcourseconcourse-git-resourceconcourse-pipeline

解决方案


我不熟悉 Concourse,但作为 Docker 的规则,您只能COPY将包含在构建上下文中的内容放入镜像中(也就是说,它们位于构建目录或构建目录的子目录中)。从你的配置文件...

      - put: my-image
        params:
          build: git-repo/compose

看起来您的构建上下文是git-repo/compose. 由于您要包含的脚本位于该目录 ( )之外git-repo/scripts/run-script.sh,因此在构建过程中将不可用。

解决方案是重新组织您的git-repo. 例如,您可以:

  • scripts/目录移动到您的compose/目录中。
  • Dockerfile移出和移入compose/git-repo目录。

推荐阅读