【发布时间】:2024-01-10 13:02:02
【问题描述】:
问题:如何将文件从主机复制到容器从内部正在运行的容器?
TL;TR:
想法:我正在使用 gitlab 服务器,我想使用 Gitlab-ci 来
1. 测试提交
2. 将所有源文件收集到一个 .tar
3. 最后将它们部署到另一台服务器
当前状态:我的 .gitlab-ci.yml 中定义了前 3 个工作。 1 和 2 工作正常,但 rsync 抛出“主机密钥验证失败”。当然是错误的。这是我的 .gitlab-ci.yml 文件的“精简”版本:
image: alpine
stages:
- test
- package
- deploy
test:
stage: test
script: bla bla testing bla bla
package:
stage: package
script: tar -cvf source.tar htdocs
deploy:
stage: deploy
before_script:
- apk update
- apk add rsync openssh
script:
- rsync -vuar source.tar servadmin@123.123.123.123:/home/servadmin/transfer
除了这个 .yml 文件之外,我无法访问这些容器,因此我确实需要找到一种方法将公钥从主机复制到容器,但我必须从容器内部执行此操作。或者我可以使用多跑步者等,但我是 ci 的新手,我暂时可以避免这种情况
【问题讨论】:
-
您是否尝试为存在公钥的 gitlab 运行器创建自定义图像?
-
能否将密钥作为卷挂载到容器中?能够将任意文件从主机复制到容器中会带来巨大的安全风险。
-
我使用了 COPY 而不是 VOLUME。这也会带来安全风险吗?