Dockerfile pour le clonage privé repo git
j'essaie de cloner le dépôt git privé de github. J'ai fait un Dockerfile comme ceci:
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
j'utilise cette carte avec cette clé très bien localement, donc il semble que je manque quelque chose à l'intérieur de docker.
une autre chose qui me manque peut-être, c'est que les deux ~
et $HOME
à l'intérieur de docker point /
au lieu de /root
, mais je ne suis pas sûr que cela puisse être lié.
3 réponses
Quel est le résultat du processus de construction?
au hasard: Essayez de chmod 600
la clé privée.
Si ça ne fonctionne toujours pas, essayez de RUN ssh -v git@github.com
(après avoir ajouté la touche); la sortie doit expliquer ce qui se passe.
le clavier fonctionne très bien puisqu'il accepte l'hôte. La réponse complète suivante a fonctionné:
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
Aussi, comme il est mentionné:
RUN ssh -v git@github.com
^ Grande façon de déboguer le flux. C'est comme ça que j'ai réalisé que j'avais besoin de la clé >> known_hosts
(ne Sera probablement pas s'adapter à vos besoins)
Il y a une autre approche: https://stackoverflow.com/a/29464430/990356
paramètres > jetons D'accès personnels et générer un token d'accès personnel avec repo
champ d'application activée.
Maintenant vous pouvez faire git clone https://MY_TOKEN@github.com/user-or-org/repo
Avantages:
- approche très simple
- jeton peut facilement être révoqué
contre:
- si quelqu'un a accès au fichier Dockerfile il a accès au token
Pour résoudre ce problème, vous pouvez utiliser une variable d'environnement pour stocker le jeton