Как правильно организовать релиз флоу с docker, spring-boot, angular?
Всем привет !
Вот уже который день бьюсь над вопросом , как организовать мультистейджинг с Docker и Spring-boot и Angular
Так как читал что нужно запускать один и тот же имедж докера на продакшин и девелопмент стал вопрос как это сделать !
из проблем есть следующее :
1. Проект Ангуляра , нужно собрать и указать с какой урлой работать (Дев или прод) , это все делается мавеном
2. Собраный проект ангуляра лежит в app.jar в ресурсах
вопрос , как нужно сбилдить имедж докера , что бы потом его запаблишить в реджистри , и после этого запускать на деве и проде
1) собирать в джарник релизную версию ангуляра и активировать релизный профиль в спринге
2) настроить поиск статического веб-контента вне джарника (в определенном каталоге фс, например, $PWD/web) и установить приоритет, что если каталог вне джарника найден, то сервить будет из него
3) при тестировании применить SPRING_PROFILES_ACTIVE=dev (при желании можно еще конфиги, специфичные для дева подложить рядом с джарником, и они подхватятся - см. https://docs.spring.io/spring-boot/docs/current/re... и отдельно собрать девелоперскую версию фронта, поместив её в $PWD/web
4) ...
5) PROFIT
теперь если в прод закинешь джарник, будет релизная сборка ангуляра, а если рядышком подложишь дебажную, то сервиться будет она.
Используйте профили. Для каждой среды "test/stage/prod" свой профиль со своими настройками. Ну и свой конфиг, соответственно. Как подсунуть имаджу с каким профилем запускаться можно тут почитать. https://spring.io/guides/gs/spring-boot-docker/
С профилем проблем нет , там все понятно
вопрос с Angular , он лежит внутри jar файла, т.е. я перед упаковкой сначала минифицирую фронт , и указываю что юзай dev настройки. на выходе получается jar и внутри лежит минифицированый фронт , с настройками dev среды. и дальше я не могу запустить этот же jar на prod мне приходится делать ребилд , с настройками фронта для prod