损坏的dockerfile:github的部署密钥不再复制正确

下面的代码片段在一个月前工作得很好(我最后一次运行容器)。现在不是。 为什么?

RUN mkdir /root/.ssh && \ mv /root/deployment_key /root/.ssh/id_rsa && cat /root/.ssh/id_rsa && \ chmod 600 /root/.ssh && \ chmod 600 /root/.ssh/id_rsa && \ ssh-keyscan github.com,$(getent hosts github.com | awk '{ print $1 }') > ~/.ssh/known_hosts 

当我cat ~/.ssh/known_hosts ,公钥只有它应该的一半。 私钥在/root/.ssh/id_rsa是正确的。

下一行(私人回购的git clone )失败

 Permission denied (publickey). fatal: The remote end hung up unexpectedly The command '/bin/sh -c git clone ssh://FOO@github.com/FOO/PRIVAT_REPO.git' returned a non-zero code: 128 

我在OSX上运行docker版本1.12.1-rc1-beta23(build:11375),但在Windows 10上也失败了。

 mv /root/deployment_key /root/.ssh/id_rsa 

这意味着在RUN mv命令之前 ,您的Dockerfile包含一个ADDCOPY命令,该命令先填充/root/deployment_key

尝试通过以下方法从现有的Dockerfile中创build另一个映像:

  • 修改该新镜像的DockerfileRUN echo /root/deployment_key/id_rsa.pub并查看它是否存在,以及预期的内容和内容长度,
  • 拆分RUN命令以隔离RUN mv部分并检查其内容,然后继续执行RUN命令的其余部分。