从git repo复制广场构建docker映像

从git repo复制广场构建docker映像,docker,dockerfile,concourse,concourse-git-resource,concourse-pipeline,Docker,Dockerfile,Concourse,Concourse Git Resource,Concourse Pipeline,我尝试使用一个集合管道来拉git repo,然后从git repo中的Docker文件构建/推送Docker映像。dockerfile中有一个复制命令,用于将文件从repo复制到映像中。通常情况下,我会装载一个卷,以便在构建时将这些文件复制到其中,但在Concourse中找不到这样做的方法。以下是我正在尝试的: # pipeline.yml resources: - name: git-repo type: git source: uri: <the-g

我尝试使用一个集合管道来拉git repo,然后从git repo中的Docker文件构建/推送Docker映像。dockerfile中有一个复制命令,用于将文件从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文件在生成时复制到映像中?谢谢。

我不熟悉Concourse,但Docker的规则是,您只能将包含在生成上下文中的内容复制到映像中,即它们位于生成目录或生成目录的子目录中。从您的配置文件

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

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

解决方案是重新组织git回购。例如,您可以:

将脚本/目录移动到compose/目录中。 将Dockerfile移出compose/并移到git repo主目录中。
找到了一条路。构建上下文假定为基本目录,例如示例中的git repo/compose。结果,我想要复制的文件在我可用的目录之外。如果Dockerfile不在根目录中,如果仍然希望访问相同/更高级别文件的其余部分,则需要在Dockerfile参数中指定它。工作示例:

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

谢谢你提供的信息-我发现有一个解决方案不需要重新组织回购协议,这是我无法控制的。我将简短地发布它,这正是我建议将git repo主目录作为构建上下文的内容。不必移动Dockerfile是很好的,但除此之外,这是相同的解决方案。