Использование секретов 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
,
Затем тот же сценарий запускает службу на переднем плане, как только файлы конфигурации будут правильно сгенерированы / оценены.