
In Docker 18.09+
können wir den folgenden Ansatz verwenden, um beim Erstellen eines Images einen weitergeleiteten SSH-Schlüssel zu verwenden:
# syntax=docker/dockerfile:experimental
# example file
FROM node:10.15.3-alpine
RUN apk update && apk add openssh-client git
# use the forwarded ssh key
RUN --mount=type=ssh git clone <repo>
Dann würden wir das Image folgendermaßen erstellen:
DOCKER_BUILDKIT=1 docker build --ssh default .
Ich würde dies gerne docker-compose
erreichen, aber es scheint nicht zu funktionieren. Es gibt kein Flag für den Befehl docker-compose und ich kann in der Datei --ssh
nichts sehen, was ich festlegen könnte, um dies zu erreichen.docker-compose.yml
Antwort1
Die am meisten hochgevotete Antwort ist zum Zeitpunkt des Schreibens falsch. Das hier funktioniert einwandfrei:
$ docker compose build --ssh default
$ docker compose version
Docker Compose version v2.5.1
Dies setzt voraus, dass Ihr öffentlicher Schlüssel für den SSH-Agenten sichtbar ist:
ssh-add -L
Wenn nicht, führen Sie aus ssh-add -K
oder führen Sie unter macOS aus ssh-add --apple-use-keychain
.
Antwort2
Aufgrund der Kommentare zu diesem Problem glaube ich leider, dass dies derzeit nicht unterstützt wird:https://github.com/docker/compose/issues/6358 – tatsächlich liefert das Googeln nach „docker-compose BuildKit“ einige Links zu verschiedenen Tickets, die alle darauf hinzuweisen scheinen, dass die Verwendung von BuildKit derzeit von docker-compose nicht unterstützt wird.
Die Problemumgehung, die ich versuchen würde (und die auch in einigen dieser Ticketkommentare erwähnt wird), besteht darin, die Bilder separat mit einem Shell-Skript zu erstellen, das „Docker Build“ aufruft, bevor Docker-Compose ausgeführt wird.