docker - 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 复制到我的映像中?谢谢你。
解决方案
我不熟悉 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
目录。
推荐阅读
- javascript - SocketIO & ReactJs:Socket Emitting 多次
- java - 即使所有值都保存在数组中,为什么我的 find 方法在这里不起作用?
- flutter - 在 Flutter 中重新发送 OTP 代码 Firebase 电话身份验证
- postgresql - Postgresql 服务器不断更改密码
- java - 我想从数据库 JAVA Jframe 中显示用户名
- css - 如何仅使用 CSS 将自动生成的 HTML 表格居中对齐?
- c++ - c++中“fstream”的一次和两次打开有什么区别(在第一种情况下输入不起作用)?
- javascript - 如何使用点击事件导航到另一个页面
- javascript - 在脚本中找不到文件
- c# - 访问报告和 C#