docker - 如何将文件从 GitLab Runner 助手容器复制到构建容器?
问题描述
设置
我使用 KubernetesExecutor 设置了 GitLab Runner,并希望创建一个自定义帮助程序映像,该映像将一些额外的文件添加到构建容器中。
当前的设置非常基本:
- A
Dockerfile
,它将一些文件(start.sh
和Dockerfile
)添加到容器中。 start.sh
辅助图像中存在的文件。这应该在运行助手时执行。
代码
启动.sh
#!/bin/bash
printenv > /test.out # Check whether the script is run.
cp /var/Dockerfile /builds/Dockerfile # Copy file to shared volume.
exec "$@"
Dockerfile
FROM gitlab/gitlab-runner-helper:x86_64-latest
ADD templates/Dockerfile /var/Dockerfile
ADD start.sh /var/run/start.sh
ENTRYPOINT ["sh", "/var/run/start.sh"]
容器之间的共享卷是:/builds
. 因此,我想复制/var/Dockerfile
到/builds/Dockerfile
.
问题
start.sh
在执行帮助图像时,我似乎找不到(甚至)运行的方法。使用 kubectl exec -it pod-id -c build bash
and kubectl exec -it pod-id -c helper bash
,我验证文件是否已创建。当我start.sh
从后一个命令运行(手动)时,文件被复制。但是,最初登录帮助程序映像时,两者/test.out
都不可用。/builds/Dockerfile
尝试
- 我尝试设置不同的
CMD
(/var/run/start.sh
),但似乎它根本不运行该sh
文件。
解决方案
推荐阅读
- java - 弹出列表视图出现在另一个列表视图的 ItemClickListener 上
- javascript - 如何将要在下一帧调用的 MicroTask 排队?
- python - 如何使用 pytorch 进行“逐个元素就地反转”?
- java - Java 递归回溯
- rust - 如何删除弱
如果无法升级到强引用,则 BinaryHeap 的价值? - c - 使 else if 语句起作用的问题
- java - 使用 Android Volley 在 laravel Passport 中创建用户
- mysql - 在mysql错误1064中创建触发器时出现问题?
- r - plotly中热图的透明度
- javascript - 在 es6 中等待而不需要响应