在Dockerfile中的Git克隆回购

我试图从Dockerfile构build图像时克隆存储库。 我正在使用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添加到该存储库的部署密钥。 我试图在图像上运行bash ,并用同样的问题git clone -ing。 我很难过 我在这里发现这个相关的问题,但我的SSH密钥是无密码的,所以它没有帮助。

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

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

对于公共仓库,最简单的解决scheme就是使用https:// URL作为仓库,而不是通过ssh访问它。

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

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

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