我正在尝试在Docker中构建一个图像,它需要一些秘密文件来执行诸如从私有git repo中提取的内容.我见过很多人用这样的代码:
ADD id_rsa /root/.ssh/id_rsa RUN chmod 700 /root/.ssh/id_rsa RUN touch /root/.ssh/known_hosts RUN ssh-keyscan github.com >> /root/.ssh/known_hosts RUN git clone git@github.com:some/repo.git /usr/local/some_folder
虽然这有效,但这意味着我必须将我的私人id_rsa与我的图像存储在一起,这对我来说是一个坏主意.我宁愿做的是将我的秘密文件保存在像s3这样的云存储中,只需将凭据作为环境变量传递,以便能够将其他所有内容都删除.
我知道我可以docker run
在-e
交换机中传递环境变量,但是如果我在构建时需要一些文件(比如id_rsa来执行git克隆),我该怎么办?理想情况下,我能够传递环境变量docker build
,但这是不可能的(我无法理解为什么).
那么,想法?在这里做什么是规范/正确的事情?我不能成为这个问题的第一人.