损坏的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
包含一个ADD
或COPY
命令,该命令先填充/root/deployment_key
。
尝试通过以下方法从现有的Dockerfile中创build另一个映像:
- 修改该新镜像的
Dockerfile
以RUN echo /root/deployment_key/id_rsa.pub
并查看它是否存在,以及预期的内容和内容长度, - 拆分RUN命令以隔离
RUN mv
部分并检查其内容,然后继续执行RUN命令的其余部分。