2015-04-07 64 views
1

我想在从Dockerfile构建图像时克隆存储库。我使用的sequenceiq/docker-spark Dockerfile和如下(前ENTRYPOINT线)延长它:我得到了几分钟后,下面的错误Dockerfile中的Git克隆回购

RUN yum install -y git 
RUN git clone [email protected]:myorg/myrepo.git 

Initialized empty Git repository in /myrepo/.git/ 
fatal: The remote end hung up unexpectedly 
INFO[0128] The command [/bin/sh -c git clone [email protected]:myorg/myrepo.git] returned a non-zero code: 128 

我已经添加了图像的id_rsa.pub到该存储库的部署密钥。我尝试在图像上运行bash,并尝试运行git clone,同样的问题。我很难过。我发现这个相关的问题here,但我的SSH密钥是无密码的,所以它没有帮助。

回答

0

我已将图像的id_rsa.pub添加到该存储库的部署密钥。

如果你要使用SSH密钥来验证GitHub上,你需要做在构建过程中使用的容器内相应的私钥(例如,通过与COPY指令将其复制到容器)。

对于公共存储库,最简单的解决方案是使用存储库的https:// URL,而不是通过ssh访问它。

对于专用库,使用https:// URL可能是最容易,然后安排来提供经由git的凭证机构(http://git-scm.com/docs/git-credential-store)凭证。

+0

基本映像生成一个无密码的私人公钥对。我将该公钥从映像添加到存储库的部署密钥中,因此相应的私钥在'/ root/.ssh/id_rsa'中可用。而且,如果我不添加公钥,我会得到同样的错误。 –

0

我认为Git可能试图检查服务器与known_hosts。尝试将-o CheckHostIP=no -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null传递给SSH。

another question有关于如何将这些值传递给Git的良好答案。基本上,你需要运行Git> 2.3或者创建一个小小的shell脚本,以你想要的方式调用SSH并指向Git。