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

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

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

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


person Jackson    schedule 04.01.2018    source источник


Ответы (2)


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

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

person VonC    schedule 04.01.2018

В зависимости от службы вы можете указать путь к файлу секретов (внутри / 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 Secrets), его необходимо смонтировать в /var/lib/rabbitmq/.erlang.cookie:

person nachbar    schedule 18.11.2018
comment
Это кажется более точным / подробным, чем мой ответ. +1 - person VonC; 18.11.2018