Использование секретов Docker в контейнере

Я использую Docker CE 17.09-1. Я использую Docker Swarm и развернул стек с несколькими сервисами.

Я решил использовать секреты Docker для различных учетных данных. Одна из служб, которые я использую, требует ввода имени пользователя и пароля базы данных в файле конфигурации. Я создал два секрета для каждого требуемого удостоверения и вижу файлы только для чтения в /run/secrets/ в контейнере. Как мне вставить содержимое этих файлов в мой файл конфигурации? Мой конфигурационный файл .ini файл, и содержит ряд значений.

Заранее благодарю за любые предложения.

2 ответа

В зависимости от службы, вы можете установить путь к файлу секретов (в /run/secrets) в переменной среды, либо указать на файл секретов в INI-файле или смонтировать файл секретов, где находится образ ожидает секрет

Для примера первого взгляните на изображение mysql в Docker Hub - как указано https://hub.docker.com/_/mysql/:

В качестве альтернативы передаче конфиденциальной информации через переменные среды, _FILE может быть добавлен к ранее перечисленным переменным среды, заставляя скрипт инициализации загружать значения для этих переменных из файлов, присутствующих в контейнере. В частности, это можно использовать для загрузки паролей из секретов Docker, хранящихся в / run / secrets / files.

Для примера последнего см. Изображение rabbitmq на Docker Hub. Как отметил https://hub.docker.com/_/rabbitmq/:

Если вы хотите предоставить cookie через файл (например, с помощью секрета Docker), его необходимо смонтировать в /var/lib/rabbitmq/.erlang.cookie:

То, что я рассмотрел раньше, это изменить мой ENTRYPOINT или же CMD сценарий для того, чтобы этот сценарий изменил или сгенерировал мой локальный конфигурационный файл (шаблон), оцениваемый с секретами, прочитанными во время выполнения в /run/secrets,

Затем тот же сценарий запускает службу на переднем плане, как только файлы конфигурации будут правильно сгенерированы / оценены.

Другие вопросы по тегам