Как правильно хранить конфиг для томкат-приложения?
От: vsb Казахстан  
Дата: 19.04.19 10:50
Оценка:
Основная цель — чтобы не было проблем при деплое новой версии (т.е. конфиг должен сохраниться). Конфиг в общем случае это соединение с БД; некие пары ключ=значение и файлы. Плюс: при локальной разработке это тоже должно настраиваться достаточно удобно.

Пробовал хранить в conf/Catalina/localhost/app.xml (при локальной разработке в src/main/webapp/META-INF/context.xml) но проблема в том, что если через консоль manager удалить приложение (чтобы задеплоить новую версию), то этот файл при удалении приложения тоже удаляется. Понятно, что "тупо" хранить в webapps/app/WEB-INF/classes/config.properties так себе вариант, т.к. усложняется деплой, вместо того, чтобы закинуть одну варку, надо уже лепить скрипты. Делал отдельный tomcat-base и настраивал хитрым образом classpath так, что conf/app был в classpath запущенного приложения, в принципе этот вариант мне больше всех понравился (для локальной разработки конфиги в src/main/resources), но слишком сложная процедура, хочется с минимумом усилий деплоить на только что распакованный томкат.
Re: Как правильно хранить конфиг для томкат-приложения?
От: Baudolino  
Дата: 19.04.19 14:12
Оценка: 8 (1) +1 -1
Переменные окружения давно уже best practice для передачи начальных параметров конфигурации. Если конфиг большой и через окружение его передавать неудобно, то скорее всего что-то не так в архитектуре.
Re: Как правильно хранить конфиг для томкат-приложения?
От: bzig  
Дата: 19.04.19 18:49
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Основная цель — чтобы не было проблем при деплое новой версии (т.е. конфиг должен сохраниться). Конфиг в общем случае это соединение с БД; некие пары ключ=значение и файлы. Плюс: при локальной разработке это тоже должно настраиваться достаточно удобно.


Локальный проперти файл, но не в Томкате, а в юзерской папке.

Переменные окружения, как тут посоветовали, — отстой. В какой-то момент потребуется держать запущенными 2 версии (старую и новую или примари/секондари) и тут ты лососнёшь тунца с настройкой окружения.


А вообще, зачем выделенный Томкат? Почему нельзя СпрингБут с Томкатом внутри?
Re[2]: Как правильно хранить конфиг для томкат-приложения?
От: GarryIV  
Дата: 19.04.19 20:18
Оценка:
Здравствуйте, bzig, Вы писали:

B>Локальный проперти файл, но не в Томкате, а в юзерской папке.


B>Переменные окружения, как тут посоветовали, — отстой. В какой-то момент потребуется держать запущенными 2 версии (старую и новую или примари/секондари) и тут ты лососнёшь тунца с настройкой окружения.


Эмм. Два пользователя делать умеем а переменные им разные не умеем? В виртуализацию очевидно тоже не умеем.
WBR, Igor Evgrafov
Re[3]: Как правильно хранить конфиг для томкат-приложения?
От: bzig  
Дата: 20.04.19 01:44
Оценка:
Здравствуйте, GarryIV, Вы писали:

GIV>Здравствуйте, bzig, Вы писали:


B>>Локальный проперти файл, но не в Томкате, а в юзерской папке.


B>>Переменные окружения, как тут посоветовали, — отстой. В какой-то момент потребуется держать запущенными 2 версии (старую и новую или примари/секондари) и тут ты лососнёшь тунца с настройкой окружения.


GIV>Эмм. Два пользователя делать умеем


Зачем два пользователя? -Duser.dir=...

GIV> В виртуализацию очевидно тоже не умеем.


Виртуализация новая фишка, не так широко распространена.

GIV>а переменные им разные не умеем?


Умеем. Просто понимаем, что это труднее поддерживать, и тем труднее, чем больше команда. Файл один раз объяснил где лежит и всё. Любой может посмотреть, с чем программа запущена.

EXPORT a=b
EXPORT c=d
java ....

Ищи потом концы, в списке процессов только java
Re[2]: Как правильно хранить конфиг для томкат-приложения?
От: vsb Казахстан  
Дата: 20.04.19 09:13
Оценка:
Здравствуйте, bzig, Вы писали:

B>Переменные окружения, как тут посоветовали, — отстой. В какой-то момент потребуется держать запущенными 2 версии (старую и новую или примари/секондари) и тут ты лососнёшь тунца с настройкой окружения.


А в чём проблема? Я сейчас томкат запускаю через systemd сервис, там и прописываю переменные окружения. В принципе проблем прописать там переменные конфига вроде нет.

B>А вообще, зачем выделенный Томкат? Почему нельзя СпрингБут с Томкатом внутри?


Не выношу этого спринг бута. Какой-то уродский проект. Принципиально не юзаю. Обычный спринг юзаю, а бут — нет. Слишком сложно всё наворотили. Несколько раз пытался осилить, так и не осилил, не по уму сделано.
Отредактировано 20.04.2019 9:14 vsb . Предыдущая версия .
Re[3]: Как правильно хранить конфиг для томкат-приложения?
От: bzig  
Дата: 21.04.19 03:39
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Здравствуйте, bzig, Вы писали:


B>>Переменные окружения, как тут посоветовали, — отстой. В какой-то момент потребуется держать запущенными 2 версии (старую и новую или примари/секондари) и тут ты лососнёшь тунца с настройкой окружения.


vsb>А в чём проблема? Я сейчас томкат запускаю через systemd сервис, там и прописываю переменные окружения. В принципе проблем прописать там переменные конфига вроде нет.


А из ИДЕИ запуская, тоже прописываешь ей все переменные? Уже два места прописывать.

Я так помню, ты фрилансер, значит опыт командной разработки примерно отсутствует? Тогда да, можно позволить себе совать переменные окружения во все места.

B>>А вообще, зачем выделенный Томкат? Почему нельзя СпрингБут с Томкатом внутри?


vsb>Не выношу этого спринг бута. Какой-то уродский проект. Принципиально не юзаю. Обычный спринг юзаю, а бут — нет. Слишком сложно всё наворотили. Несколько раз пытался осилить, так и не осилил, не по уму сделано.


Сочувствую.
Re[4]: Как правильно хранить конфиг для томкат-приложения?
От: vsb Казахстан  
Дата: 21.04.19 08:13
Оценка:
Здравствуйте, bzig, Вы писали:

vsb>>Здравствуйте, bzig, Вы писали:


B>>>Переменные окружения, как тут посоветовали, — отстой. В какой-то момент потребуется держать запущенными 2 версии (старую и новую или примари/секондари) и тут ты лососнёшь тунца с настройкой окружения.


vsb>>А в чём проблема? Я сейчас томкат запускаю через systemd сервис, там и прописываю переменные окружения. В принципе проблем прописать там переменные конфига вроде нет.


B>А из ИДЕИ запуская, тоже прописываешь ей все переменные? Уже два места прописывать.


Как я это вижу: есть конфиг-файл, в котором всё прописано. В идее надо будет дописать отличия (например IP-адрес своей локальной БД, если она не на 127.0.0.1).

B>Я так помню, ты фрилансер, значит опыт командной разработки примерно отсутствует? Тогда да, можно позволить себе совать переменные окружения во все места.


Ну вот товарищи выше говорят, что так делают. Я потому и спрашиваю — интересно, как люди делают. Раз делают, значит не самый плохой вариант.

B>>>А вообще, зачем выделенный Томкат? Почему нельзя СпрингБут с Томкатом внутри?


vsb>>Не выношу этого спринг бута. Какой-то уродский проект. Принципиально не юзаю. Обычный спринг юзаю, а бут — нет. Слишком сложно всё наворотили. Несколько раз пытался осилить, так и не осилил, не по уму сделано.


B>Сочувствую.


А чего мне сочувствовать. Я как раз радуюсь жизни, т.к. не приходится разбираться с магией, которой в этом спринг буте накрутили от души.
Re[4]: Как правильно хранить конфиг для томкат-приложения?
От: Baudolino  
Дата: 12.07.19 09:25
Оценка:
GIV>> В виртуализацию очевидно тоже не умеем.
B>Виртуализация новая фишка, не так широко распространена.
AWS EC2 — 2006 год, Docker — 2013 год. Сегодня — 2019 год.

B>Умеем. Просто понимаем, что это труднее поддерживать, и тем труднее, чем больше команда.

DevOps как специализация существует уже лет 10, и на эти вопросы давно даны ответы (большая команда в принципе не должна работать с большими конфигами). Если для вас современные best practices являются проблемой, скорее всего вы вынуждены работать с одним из прошлых поколений архитектур и процессов и ответ на вопрос "как правильно" (подразумевающий "правильно сегодня") вам естественно не интересен. Соответственно, стоило бы спросить "как правильно вчера" и объяснить, почему вы ещё там.
Re: Как правильно хранить конфиг для томкат-приложения?
От: elmal  
Дата: 09.08.19 18:40
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Основная цель — чтобы не было проблем при деплое новой версии (т.е. конфиг должен сохраниться). Конфиг в общем случае это соединение с БД; некие пары ключ=значение и файлы. Плюс: при локальной разработке это тоже должно настраиваться достаточно удобно.

Вообще говоря. Сейчас стандарт — это деплой через Docker контейнер в какой нидь кластер. Типа Kubernetes, OpenShift, AWS и т.д. Так вот, для кластера самое удобное — это конфиги в переменных окружения. По крайней мере я пока недостатков в этом решении не вижу, лично мне жить вполне комфортно и никаких болей нет.
Re[2]: Как правильно хранить конфиг для томкат-приложения?
От: vsb Казахстан  
Дата: 09.08.19 18:43
Оценка:
Здравствуйте, elmal, Вы писали:

E>Вообще говоря. Сейчас стандарт — это деплой через Docker контейнер в какой нидь кластер. Типа Kubernetes, OpenShift, AWS и т.д. Так вот, для кластера самое удобное — это конфиги в переменных окружения. По крайней мере я пока недостатков в этом решении не вижу, лично мне жить вполне комфортно и никаких болей нет.


Я в общем в итоге пришел к тому, что конфиг класть в META-INF/context.xml в JNDI-дерево. Для деплоя надо вручную распаковать jar-файл и заменить там этот файл боевым (ну как вручную, батником, конечно).
Переменные окружения это слишком странно для меня. Докером не пользуюсь.

Вообще по идее лучше всего класть в conf/localhost/Catalina/appname.xml но почему-то томкат удаляет этот файл при андеплое приложения. Такой бред.
Re[3]: Как правильно хранить конфиг для томкат-приложения?
От: elmal  
Дата: 09.08.19 18:50
Оценка: +1
Здравствуйте, vsb, Вы писали:

vsb>Я в общем в итоге пришел к тому, что конфиг класть в META-INF/context.xml в JNDI-дерево.

Ну, таким решением я пользовался лет 10 назад . Потом тупо конфиг клал внутрь war, а потом, когда открыл для себя Docker, использую переменные окружения. И параметры по умолчанию, когда гоняю все на локальной машине, а переменные не указаны .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.