Автоматическая настройка конфигурации внутри Docker-контейнера - PullRequest
0 голосов
/ 03 марта 2019

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

Я пробовал это, используя файл оболочки и добавив его как entrypoint в Dockerfile.Однако, как я уже говорил, файл конфигурации не существует в самом начале, и, следовательно, команды sed в сценарии не выполняются.

Связывание файлов конфигурации с - ./myConfig.conf:/xy/myConfig.conf также не вариант, так как конфигурациясодержит некоторые параметры, зависящие от установки.

Самое разумное решение, которое у меня есть найдено - запуск сценария, который редактирует конфигурацию вручную после завершения установки с помощью docker exec -i mycontainer sh < editconfig.sh

РЕДАКТИРОВАТЬ

Мой вопрос сформулирован в общих чертах.Однако вопрос возник при работе с Nextcloud в настройке docker-compose, аналогичной официальному примеру .Этот контейнер содержит файл config.php, который является общим файлом конфигурации Nextcloud и создается во время установки.Определенные свойства этих файлов должны быть изменены (существует только очень ограниченное количество переменных среды, которые можно указать).Поскольку я провожу некоторые тесты с этим контейнером, мне приходится многократно переустанавливать его и, таким образом, заново редактировать файл конфигурации.

Ответы [ 2 ]

0 голосов
/ 03 марта 2019

Как я понимаю ваш случай, вам нужно запустить свой контейнер с создания конфигурации по какому-либо шаблону.

Я вижу несколько вариантов сделать это:

  1. Использованиенекоторый скрипт, который генерирует конфигурацию из шаблона и аргументы из командной строки или переменных среды.( Jinja2 и Python например или Усы и node.js ).В этом случае ваша точка входа генерирует шаблон и после этого запускает приложение.Для изменения конфигурации вы будете вынуждены перезапустить сервис (контейнер).

  2. Запуск некоторого сервиса может сохранить конфигурацию и отобразить ее во время выполнения.Лично мне нравится шаблон консула , мы активно используем этот движок в своей среде, и пока проблем нет.В этом случае конфигурация более динамична и может быть изменена «на лету».В вашем контейнере у вас будет два процесса: application и демон cons-template.Очевидно, вам нужно будет запустить и поддерживать консула.Для перезагрузки конфигурации достаточно перезапустить процесс приложения.

  3. Запустите пользовательский скрипт для создания конфигурации.:)

0 голосов
/ 03 марта 2019

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

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