在Dockerfile中使用Git clone repo

时间:2015-04-07 22:18:09

标签: git github ssh docker

我正在尝试在从Dockerfile构建映像时克隆存储库。我正在使用sequenceiq/docker-spark Dockerfile并将其扩展如下(在ENTRYPOINT行之前):

RUN yum install -y git
RUN git clone git@github.com: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 git@github.com:myorg/myrepo.git] returned a non-zero code: 128

我已将图像的id_rsa.pub添加到该存储库的Deploy Keys。我尝试在图片上运行bashgit clone使用相同的问题。我很难过。我发现了这个相关问题here,但我的ssh密钥是无密码的,所以它没有帮助。

2 个答案:

答案 0 :(得分:0)

  

我已将图片的id_rsa.pub添加到该存储库的Deploy Keys。

如果您尝试使用ssh密钥对GitHub进行身份验证,则需要在构建过程中在容器内部提供相应的私钥(例如,将其复制到包含COPY的容器中指令)。

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

对于私有存储库,使用https:// URL可能最简单,然后安排通过git凭据机制(http://git-scm.com/docs/git-credential-store)提供凭据。

答案 1 :(得分:0)

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

another question对于如何将这些值传递给Git有很好的答案。基本上,您需要运行Git> 2.3或者制作一个以您想要的方式调用SSH的小脚本脚本并将Git指向该位置。