Я бы сказал, что есть по крайней мере, варианты решения, которые:
Вариант 1: Если вы можете выполнить scp
перед запуском docker build
это может оказаться самым простым вариантом:
- Run
scp -r somewhere:remote_dir ./local_dir
- Добавить
COPY ./local_dir some_path
в свой Dockerfile
- Run
docker build
Вариант 2: Если вы должны выполнить scp
во время сборки:
- Start некоторые ключ-значение магазина, такие как etcd перед сборкой
- Поместите правильный ключ SSH (он не может быть защищенным паролем) временно в хранилище значений ключа
- В пределах одной команды
RUN
(чтобы не оставлять секреты внутри изображения):
- извлекает ключ SSH из хранилища значений ключа;
- положите его в
~/.ssh/id_rsa
или запустите ssh-agent
и добавьте его;
- получить каталог с
scp
- удалить SSH ключ
- Извлеките ключ из хранилища ключ-значение
Второй вариант немного запутанным, так что может быть стоит создать сценарий оболочки, который извлекает необходимые секреты, запускает любую команду и удаляет секреты.
Я добавлю вариант №3. Тар/gzip их и сделать их доступными через HTTP. ADD может принимать удаленное назначение и автоматически распаковывать. – user2105103
@ user2105103 Это действительно было бы проще, если вы не нуждаетесь в аутентификации, или если pass или hardcode - неопознанный URL. Также стоит отметить, что использование «ADD» не рекомендуется для аналогичных случаев использования: https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/#/add-or-copy – konradstrack