用于克隆私人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来存储令牌