Reenviar clave ssh usando Docker Compose

Reenviar clave ssh usando Docker Compose

En Docker 18.09+podemos utilizar el siguiente enfoque para utilizar una clave ssh reenviada al crear una imagen:

# 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>

Luego construiríamos la imagen así:

DOCKER_BUILDKIT=1 docker build --ssh default .

Me gustaría utilizar docker-composepara lograr esto, pero no parece funcionar. No hay ningún --sshindicador para el comando docker-compose y no veo nada que pueda configurar en el docker-compose.ymlarchivo para lograrlo.

Respuesta1

La respuesta más votada al momento de escribir esto es incorrecta. Esto funciona bien:

$ docker compose build --ssh default
$ docker compose version                               
Docker Compose version v2.5.1

Esto requiere que su clave pública sea visible para el agente SSH:

ssh-add -L

Si no, ejecute ssh-add -Ko en macOS ejecute ssh-add --apple-use-keychain.

Respuesta2

Desafortunadamente, creo que esto no es compatible actualmente, según los comentarios sobre este tema:https://github.com/docker/compose/issues/6358 - de hecho, buscar en Google "docker-compose BuildKit" proporciona algunos enlaces a varios tickets que parecen indicar que el uso de BuildKit no es compatible actualmente con docker-compose.

La solución alternativa que probaría (así como se menciona en algunos de estos comentarios de tickets) es crear las imágenes por separado, con un script de shell que llame "docker build", antes de ejecutar docker-compose.

información relacionada