用于克隆私人git回购的Dockerfile

我试图从github克隆私人git存储库。 我做了这样一个Dockerfile:

FROM ubuntu:12.04 RUN apt-get update RUN apt-get install -y git RUN mkdir -p /root/.ssh/ ADD ./id_rsa /root/.ssh/id_rsa RUN git clone git@github.com:usr/repo.git 

我用这个关键在本地回购,所以看起来我在docker里面丢失了一些东西。

还有一件事我可能会丢失的是docker中的~$HOME指向/而不是/root ,但是我不确定这是否可以相关。

构build过程的输出是什么?

随机猜测:尝试chmod 600私钥。

如果仍然无法RUN ssh -v git@github.com ,请尝试RUN ssh -v git@github.com (添encryption钥后); 输出应该解释发生了什么事情。

运行ssh-keyscan github.com >>〜/ .ssh / known_hosts

键可以工作,因为它接受主机。 以下完整的答案工作:

 RUN mkdir -p /root/.ssh RUN cp /var/my-app/id_rsa /root/.ssh/id_rsa RUN chmod 600 /root/.ssh/id_rsa RUN ssh-keyscan github.com >> /root/.ssh/known_hosts 

还提到:

 RUN ssh -v git@github.com 

^伟大的方式debuggingstream程。 这就是我意识到我需要keyscan >> known_hosts

(可能不适合你的需求)

还有另一种方法: https : //stackoverflow.com/a/29464430/990356

转到设置>个人访问令牌,并生成个人访问令牌启用repo作用域。 现在你可以做git clone https://MY_TOKEN@github.com/user-or-org/repo

优点:

  • 非常简单的方法
  • 令牌可以很容易地被撤销

缺点:

  • 如果有人有权访问Dockerfile,他可以访问令牌

要解决这个问题,你可以使用一个环境variables来存储令牌