Как использовать смонтированный ssh в докере для последующих команд в Dockerfile
Мне нужно выполнить git push при запуске моего контейнера с помощью CMD. Но ssh недоступен в последней строке, то есть в части CMD, чтобы выполнить git push. Что я могу сделать здесь, чтобы получить ssh-ключ для git push? Кто-нибудь, пожалуйста, помогите мне.
Найдите мой Dockerfile
# syntax = docker/dockerfile:1.0-experimental
FROM continuumio/anaconda3
# Install git
RUN apt-get update && apt-get install -y git
# Download public key for github.com
RUN mkdir -p -m 0600 ~/.ssh && ssh-keyscan github.com >> ~/.ssh/known_hosts
# Clone private repository
RUN --mount=type=ssh git clone git@github.com:myorg/myproject.git myproject
CMD python myproject/src/example.py && git push
Затем я использую следующую команду, чтобы передать свой ключ ssh во время запуска
docker build --ssh default .
2 ответа
Как видно из разделов " BuildKit / Использование SSH для доступа к личным данным в сборках " и " Секреты сборки и перенаправление SSH в Docker 18.09 ", я вижу, что это используется с:
--mount=type=ssh
- только на
RUN
линии, а неCMD
Так что это будет работать с RUN
, в течение docker build
.
Это может не работать во время выполнения (docker run
) с CMD
Для потомков: есть 3 обязательных условия для этой работы, поэтому убедитесь, что сборка использует buildx внутриDockerfile
ты используешьRUN
команда с--mount=type=ssh
и ты проходишь мимо--ssh default
параметр команды сборки:
export DOCKER_BUILDKIT=1
FROM ...
RUN --mount=type=ssh композитор установить --no-dev --no-interaction
docker build --ssh default .