如何将dir从远程主机复制到docker映像
我正在试图build立一个docker图像,我有dockerfile所有必要的命令。 但在我的构build步骤中,我需要将一个目录从远程主机复制到Docker镜像。 但是,如果我把scp命令放入dockerfile,我将不得不提供密码到dockerfile,我不必。
任何人有更好的解决scheme来做到这一点。 任何build议,将不胜感激。
我会说,至less有处理这个问题的select:
选项1:如果你可以在运行docker build
之前执行scp
,这可能是最简单的select:
- 运行
scp -r somewhere:remote_dir ./local_dir
- 将
COPY ./local_dir some_path
添加到您的Dockerfile - 运行
docker build
选项2:如果你必须在构build过程中执行scp
:
- 在构build之前启动一些诸如etcd的键值存储
- 在键值存储区中临时放置一个正确的SSH密钥(它不能被密码保护)
- 在一个单一的
RUN
命令(为了避免在图像中留下秘密):- 从键值存储中检索SSH密钥;
- 把它放在
~/.ssh/id_rsa
或者启动一个ssh-agent
并添加它; - 用
scp
检索目录 - 删除SSH密钥
- 从键值存储中删除键
第二个选项有点复杂,所以可能值得创build一个包装脚本来检索所需的秘密,运行任何命令,并删除秘密。