Двенадцать факторных приложений для развертывания микросервисов Docker
Мне действительно нравятся идеи Манифеста Двенадцати Факторов. Я пытаюсь применить их к небольшому развертыванию в стиле микросервиса для проекта Python/Django. Проект Django упакован в контейнер Docker, который развертывается через Docker Hub.
Единственное, что я пытаюсь понять, - это как обращаться с файлами конфигурации и переменными среды. Общая мудрость 12-факторных приложений заключается в том, что конфигурация должна храниться в виде переменных среды, а не в управлении исходным кодом. Я думаю о реализации этого с помощью django- environment, который проверяет переменные среды, а также .env
файл для использования в dev.
Как мне установить эти переменные среды в производстве?
- В Docker можно объявить переменные среды как
ENV
в Dockerfile ( док). Таким образом, я могу добавить эту информацию туда, но я проверяю в Dockerfile исходный код, так что это побьет цель. - Я мог бы создать дополнительный
.env
файл для производства, а не проверять его в системе контроля версий. Я могу скопировать эту продукцию.env
файл при создании изображения с помощьюCOPY
команда. Но это означает, что разработчик будет иметь доступ к учетным данным БД. - Настройте пользовательский триггер сборки, чтобы при обновлении кода в исходном элементе управления запускался триггер сборки. Когда изображение строится, этот строительный узел добавляет это
.env
файл, и развертывается на сервере.
Я чувствую, что третий вариант - единственный, который имеет смысл. Но даже в этом случае элементы конфигурации все еще хранятся в файле, а не в переменных среды.
Есть идеи, как это сделать?