Weiterleiten des SSH-Schlüssels mit Docker Composer-Compose

Weiterleiten des SSH-Schlüssels mit Docker Composer-Compose

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-composeerreichen, aber es scheint nicht zu funktionieren. Es gibt kein Flag für den Befehl docker-compose und ich kann in der Datei --sshnichts 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 -Koder 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.

verwandte Informationen