Кто сказал, что файлы свойств и переменные окружения где взаимоисключающие?
Необходимо проводить различие между «где хранить конфигурацию моего приложения?» И "откуда у моего приложения источник его конфигурации?"
Наиболее вероятным результатом является то, что каждый, вероятно, должен просто продолжать делать то, что он делает с файлами конфигурации в качестве механизма хранения (подумайте о долгосрочном, постоянном состоянии в течение всего времени, пока существует среда).
Однако вместо того, чтобы помещать этот файл конфигурации в контекст приложения и запускать его, приложение должно просто ожидать, что эти переменные уже будут доступны в среде при запуске.
Это означает, что вам нужно иметь два рабочих процесса развертывания:
- Я могу развернуть любое приложение в среде, пройдя процесс контроля изменений X и выполнив Y-обзоры с помощью инструмента Z, что угодно.
- Я развертываю свою конфигурацию среды в среде, проходя процесс контроля изменений и проводя обзоры B с помощью инструмента C, тот же процесс, другой результат.
Чтобы использовать пример управления переменными среды в качестве пар «ключ-значение» в таком инструменте, как консул, если вы храните файлы конфигурации в git, тогда такие инструменты, как git2consul, позволяют обрабатывать эту конфигурацию в среде при ее обновлении.
Если у вас есть приложение, которое ожидает, что конфигурация будет доступна в виде файла конфигурации, тогда вы можете избежать отправки нескольких копий файла конфигурации вместе с приложением, создав процесс развертывания с чем-то вроде consul-template, который может повернуть ваш файл. значения консула обратно в файл.