Пересылка ключа ssh с помощью docker composer-compose

Пересылка ключа ssh с помощью docker composer-compose

В Docker 18.09+мы можем использовать следующий подход для использования перенаправленного ключа SSH при создании образа:

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

Затем мы построим изображение следующим образом:

DOCKER_BUILDKIT=1 docker build --ssh default .

Я хотел бы использовать docker-composeдля достижения этого, но, похоже, это не работает. Для команды docker-compose нет --sshфлага, и я не вижу ничего, что я мог бы установить в docker-compose.ymlфайле для достижения этого.

решение1

Самый популярный ответ на момент написания этого — неправильный. Это работает отлично:

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

Полагаю, что для этого требуется, чтобы ваш открытый ключ был виден агенту SSH:

ssh-add -L

Если нет, запустите ssh-add -Kили на macOS запустите ssh-add --apple-use-keychain.

решение2

К сожалению, я думаю, что в настоящее время это не поддерживается, основываясь на комментариях по этой проблеме:https://github.com/docker/compose/issues/6358 -- на самом деле, поиск в Google по запросу «docker-compose BuildKit» выдает несколько ссылок на различные тикеты, все из которых, по-видимому, указывают на тот факт, что использование BuildKit в настоящее время не поддерживается docker-compose.

Обходной путь, который я бы попробовал (и который упоминался в некоторых комментариях к тикетам), — это отдельная сборка образов с помощью скрипта оболочки, вызывающего «docker build», перед запуском docker-compose.

Связанный контент