Добавление локальных файлов в контейнер docker во время запуска (не на этапе сборки)

#java #docker

Вопрос:

У нас есть проект с конфиденциальной информацией, которую нельзя добавить в образ docker во время сборки.

Файл Dockerfile:

 FROM openjdk:11.0.12-jre-slim
COPY target/security.jar /security.jar
ENTRYPOINT ["java","-jar","/security.jar"]
 

И в безопасности проекта у нас есть папка certs с файлами * .cer.

 security/
   src/ -- source files
   certs/ -- .cer files
      test1.cer
      test2.cer
   Dockerfile
 

Мы не можем включить эти файлы в изображение, потому что это конфиденциальная информация.
И мы попытались сделать это во время запуска контейнера:

 docker run --entrypoint /bin/sh security -c 'cp certs/* certs/ amp;amp; java -jar /security.jar' security:latest
 

Но получил ошибку:

 cp: cannot stat 'certs/*': No such file or directory
 

Есть ли способ это исправить?

Ответ №1:

Может быть, нужно посмотреть тома Docker? Некоторым нравится:

 docker run <your_args> -v certs:/certs security:latest
 

Комментарии:

1. Та же ошибка, что и при запуске docker —entrypoint /bin/sh security -c ‘cp certs/* certs/ amp;amp; java -jar /security. сертификаты jar’ -v:/ безопасность сертификатов: последняя версия

2. У вас уже есть ТОЧКА входа в Dockerfile, поэтому запустите как: docker run -v сертификаты: / сертификаты безопасности: последняя версия

3. но лучше указать полный путь к смонтированному каталогу -v /home/user/certs:/certs

4. docs.docker.com/storage/volumes

5. Не могли бы вы посоветовать, что мне нужно добавить в общий доступ к файлам? папка сертификатов или повышение уровня?