2017-04-14 3 views
9

Beim Erstellen eines Docker-Image über Dockerfile muss ich ein Github Repo klonen. Ich habe meine öffentlichen SSH-Schlüssel meinem Git-Hub-Account hinzugefügt und kann den Repo von meinem Docker-Host klonen. Während ich sehe, kann ich den SSH-Schlüssel des docker-Hosts verwenden, indem ich dieenv-Variable zum Zeitpunkt des Andockmanövers wie docker run --rm -it --name container_name \ -v $(dirname $SSH_AUTH_SOCK):$(dirname $SSH_AUTH_SOCK) \ -e SSH_AUTH_SOCK=$SSH_AUTH_SOCK my_image abbilde.SSH-Agent-Weiterleitung während des Docker-Builds

Wie kann ich das gleiche während Docker bauen?

+2

So laufen, was Sie brauchen das zu verwenden ist Privater Schlüssel um 'git clone' zu ​​machen? Vielleicht ist das keine direkte Antwort auf Ihre Frage, aber ich denke, http://farazdagi.com/blog/2016/ssh-private-keys-on-docker-build/ könnte hilfreich sein. – shizhz

Antwort

0

Leider können Sie Ihren ssh-Socket nicht an den Build-Container weiterleiten, da Build-Time-Volume-Mounts derzeit in Docker nicht unterstützt werden.

Dies war ein Thema der Diskussion für eine ganze Weile jetzt, siehe die folgenden Probleme auf GitHub als Referenz:

Wie Sie diese Funktion sehen kann, hat für verschiedene Anwendungsfälle mehrfach angefordert. Bisher haben die Maintainer haben gezögert, dieses Problem zu lösen, weil sie, dass die Lautstärke Halterungen fühlen während Build Portabilität brechen würde:

das Ergebnis eines Builds sollte des zugrunde liegenden Host-unabhängig sein

Wie umrissen in this Diskussion.

0

Lösen. erstellen Bash-Skript (~/bin/Docker-compose oder mögen):

#!/bin/bash 

trap 'kill $(jobs -p)' EXIT 
socat TCP-LISTEN:56789,reuseaddr,fork UNIX-CLIENT:${SSH_AUTH_SOCK} & 

/usr/bin/docker-compose [email protected] 

Und in Dockerfile mit socat:

... 
ENV SSH_AUTH_SOCK /tmp/auth.sock 
... 
    && apk add --no-cache socat openssh \ 
    && /bin/sh -c "socat -v UNIX-LISTEN:${SSH_AUTH_SOCK},unlink-early,mode=777,fork TCP:172.22.1.11:56789 &> /dev/null &" \ 
    && bundle install \ 
... 
or any other ssh commands will works 

Dann docker-compose build

Verwandte Themen