我正在尝试从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
我在本地使用这个repo就好了,所以看起来我在Docker里面缺少一些东西。
我可能遗漏的另一件事是,泊坞内的~
和$HOME
指向/
而不是/root
,但我不确定是否可以相关。
答案 0 :(得分:20)
构建过程的输出是什么?
随机猜测:尝试chmod 600
私钥。
如果仍然无效,请尝试RUN ssh -v git@github.com
(添加密钥后);输出应该解释发生了什么。
答案 1 :(得分:14)
RUN 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
^调试流程的好方法。这就是我如何意识到我需要密钥扫描>>的known_hosts
答案 2 :(得分:2)
(可能不符合您的需求)
还有另一种方法:https://stackoverflow.com/a/29464430/990356
转到Settings > Personal access tokens并生成启用了repo
范围的个人访问令牌。
现在你可以做git clone https://MY_TOKEN@github.com/user-or-org/repo
优点:
缺点:
要解决此问题,您可以使用环境变量来存储令牌
答案 3 :(得分:0)
下面的方法是将https
与Personal Access Token一起使用,它的工作原理就像是魅力。
ARG git_personal_token
RUN git config --global url."https://${git_personal_token}:@github.com/".insteadOf "https://github.com/"
RUN git clone https://github.com/your/project.git /project
然后,提供如下所示的docker参数。
docker build --build-arg git_personal_token={your_token} .
基本思想来自https://medium.com/paperchain/fetching-private-github-repos-from-a-docker-container-273f25ec5a74