
В 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.