Идентификатор Docker не выбирает файл - PullRequest
0 голосов
/ 11 октября 2019

У меня есть сертификат, я пытаюсь установить для него сертификат "javax.net.ssl.keyStore".

System.setProperty ("javax.net.ssl.keyStore", "certs / certfile. p12 ");
System.setProperty (" javax.net.ssl.keyStorePassword "," password ");

// (полный путь - это что-то вроде этого src / main / resources / certs /certfile.p12)

Эти свойства работают нормально, когда я работаю в локальном режиме, но в докерной связке проблема заключается в том, что такого файла или каталога в certs / certfile.p12 нет.

Мне нужно добавить этот certfile.p12 в javax.net.ssl.keyStore в JAR. Также принимаются альтернативные решения.

Примечание: полный путь не будет работать в JAR.

Заранее спасибо.

1 Ответ

2 голосов
/ 11 октября 2019

Рекомендуется сохранять конфигурацию вне образа. Помимо очевидной гибкости, которую это обеспечивает (одно изображение со многими возможными конфигурациями), это также обеспечивает некоторую безопасность в том, что конфигурация (например, сертификаты) управляется извне (и предположительно безопасно).

У вас есть 2 варианта:

  • Смонтируйте certfile.p12 в том при создании | запустите контейнер:
docker run \
.... \
--volume=path/to/local/certfile.p12:/path/to/image/certfile.p12 \
...
  • Не рекомендуется (см. Преамбулу), вы включаете certfile.p12 в вашем изображении. Это требует от вас создания нового образа (требующий Dockerfile):
FROM original-image
...
ADD /path/to/local/certfile.p12 /path/to/image/certfile.p12
...

Для вашей конфигурации также необходимо установить password. Хорошей практикой будет также выводить это значение из изображения. Один из способов сделать это - использовать переменную окружения, которую вы должны затем получить с помощью своего Java-приложения. Вы можете установить переменную:

docker run \
...
---env=PASSWORD=password
...

HTH!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...