传入变量或回答Dockerfile

传入变量或回答Dockerfile,docker,boot2docker,Docker,Boot2docker,这似乎是一个经常被问到的问题。我想再问一次,看看是否有人想出了答案,或者是否有人可以提出其他建议 我们有许多计算机和运行服务,更新它们通常是一件令人头痛的事。多克进来了。我们想自动化这个过程。Docker可以很好地实现这一点,但我想自动化构建,这样我们团队中的任何人都可以做到这一点 这个过程的一部分涉及到克隆一些git存储库 我可以做的一件事是使用shell脚本在本地克隆repo,然后将它们复制到映像中,但由于有一个dockerfile可以自动执行这些操作,因此将方向放在其中似乎很自然 除了提供

这似乎是一个经常被问到的问题。我想再问一次,看看是否有人想出了答案,或者是否有人可以提出其他建议

我们有许多计算机和运行服务,更新它们通常是一件令人头痛的事。多克进来了。我们想自动化这个过程。Docker可以很好地实现这一点,但我想自动化构建,这样我们团队中的任何人都可以做到这一点

这个过程的一部分涉及到克隆一些git存储库

我可以做的一件事是使用shell脚本在本地克隆repo,然后将它们复制到映像中,但由于有一个dockerfile可以自动执行这些操作,因此将方向放在其中似乎很自然

除了提供git凭据之外,这不是问题

目前,我正在构建过程中通过id_rsa进行复制。我的想法是复制它,从回购中撤出,然后删除我的凭证。除非Dockerfile不接受用户输入,否则这应该可以正常工作

当我在dockerfile中添加我的ssh密钥时,它需要我的密钥密码……docker因为无法接受用户输入而退出

我该如何绕过这一点,并使流程自动化

这是dockerfile中的一个示例

FROM ubuntu:14.04
MAINTAINER Senica Gonzalez <senica@gmail.com>
RUN apt-get -y update
RUN apt-get -y upgrade
RUN apt-get -y install git-core
RUN apt-get -y install vagrant
RUN mkdir /home/.ssh
COPY id_rsa /home/.ssh/id_rsa
RUN eval "$(ssh-agent -s)"; ssh-add /home/.ssh/id_rsa; ssh-add -l
来自ubuntu:14.04的

维修员塞尼卡·冈萨雷斯
运行apt get-y更新
运行apt get-y升级
运行apt get-y安装git内核
运行apt get-y安装vagrant
运行mkdir/home/.ssh
复制id\u rsa/home/.ssh/id\u rsa
运行eval“$(ssh代理-s)”;ssh add/home/.ssh/id\u rsa;ssh添加-l

一种方法可能是在您正在进行
docker构建的机器上进行
git克隆
。然后可以复制克隆的源文件


这样就可以在本地计算机上处理所有git密钥,您不必担心ssh密钥会包含在Docker映像中。

您不想添加和删除密钥。每个命令都会创建一个层,该层出现在图像历史记录中,即使您从最终结果中删除了id,它也会出现在历史记录中(将其视为将id提交给github,然后删除它并推动删除)

最简单的方案是使用新的专用(和共享)密钥,该密钥具有对存储库的读取权限。此键不应有关键短语,因此不需要交互输入

如果您使用github,请检查(即使您不使用,也可能会很有启发性)

也就是说,从Dockerfile中克隆不是我的选择。我会在每个项目中使用Dockerfile或类似的东西,以便克隆在构建之前进行,并且独立于构建