Вы не можете использовать секреты времени выполнения для фразы сборки.Вы можете использовать многоэтапные сборки, чтобы скопировать секрет в образ, чтобы он был сброшен на следующем этапе, или использовать новые секреты времени сборки, которые были представлены в Docker 18.09.
Для многоэтапногометод, который вы могли бы сделать следующим образом:
FROM python:3.7 as intermediate
COPY id_rsa /root/.ssh/id_rsa # your private key must be on the build context
RUN touch /root/.ssh/known_hosts
RUN ssh-keyscan github.com >> /root/.ssh/known_hosts
COPY requirements_private_repos.txt ./
RUN pip install --no-cache-dir -r requirements_private_repos.txt
FROM python:3.7
COPY --from=intermediate XXXX YYYY # copy your modules, this image won't have the ssh private key
Для нового метода вы могли бы сделать следующее, не пробовал сам этот метод (необходим ssh-agent, работающий на хосте):
FROM python:3.7 as intermediate
RUN touch /root/.ssh/known_hosts
RUN ssh-keyscan github.com >> /root/.ssh/known_hosts
COPY requirements_private_repos.txt ./
RUN --mount=type=ssh pip install --no-cache-dir -r requirements_private_repos.txt
Затем создайте свой образ с помощью:
docker build --ssh default . -t myimage
Проверьте документацию для получения дополнительной информации о новом методе:
https://docs.docker.com/develop/develop-images/build_enhancements/#new-docker-build-secret-information