Лучшая практика для обработки конфигурации сервиса в докере - PullRequest
1 голос
/ 24 марта 2019

Я хочу развернуть приложение Docker в производственной среде (на одном хосте), используя файл docker-compose, предоставленный создателем приложения. Решение на основе докера используется в качестве замены для монолитного двоичного установщика.

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

Существует несколько способов применить пользовательскую конфигурацию к службам, которые определены в файле docker-compose.yml, однако я не уверен, что считается наилучшей практикой. В данный момент я рассматриваю два вопроса:

  • Запекать конфигурацию в новый образ . Здесь я добавил бы шаг сборки для каждой службы, определенной в файле docker-compose, и создал бы минимальный Dockerfile, который использует COPY для замены существующих файлов конфигурации в образе моими пользовательскими файлами конфигурации. Использование операторов sed и echo в CMD также может использоваться для изменения встроенной конфигурации без замены файлов оптом.

  • Используйте связывающее крепление с конфигурацией, хранящейся на хосте . В этом случае я бы сохранил все пользовательские файлы конфигурации в каталоге на хост-машине и определил привязки mind в параметре volumes для каждой службы в файле docker-compose.

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

Есть ли рекомендуемый способ внедрения пользовательской конфигурации в службы Docker?

1 Ответ

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

Учитывая ваш контекст, я думаю, что лучше использовать привязку.

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

  • вместо общей конфигурации, предоставляемой базовым образом, вы создаете образ для конкретной среды
  • каждый раз, когда вам нужно изменить конфигурацию, вам потребуется перестроить весь образ, тогда как при монтировании с привязкой простого перезапуска или перечитывания файла конфигурации приложением будет достаточно
  • Документация Docker рекомендует:

    Лучшая практика Dockerfile

    Настоятельно рекомендуется использовать VOLUME для любых изменяемых и / или Части вашего изображения, обслуживаемые пользователем.

    Хорошие варианты использования для креплений для крепления

    Совместное использование файлов конфигурации с хост-компьютера в контейнерах.

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