Развертывание Spring Boot REST: нужен ли нам TomCat?

Я видел проект Spring Boot Rest, который генерирует WAR, а затем развертывается в контейнере tomcat. Интересно, является ли это лучшей практикой, потому что я также читал, что в Spring Boot новый окончательный исполняемый файл JAR также содержит встроенное серверное решение, такое как Tomcat?

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

Может ли кто-нибудь указать на наилучшую практику развертывания проекта Spring Boot Rest?

Я думаю о докеризации JAR-файла, содержащего встроенный сервер, но мне интересно, есть ли какие-либо недостатки по сравнению с развертыванием WAR на Tomcat?


person user1955934    schedule 21.05.2019    source источник


Ответы (1)


Общая рекомендация (из приложения 12 Factor) в отношении среды приложения и зависимостей: "явно объявлять и изолировать зависимости". .

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

Имея это в виду, следует больше склоняться к использованию встроенного контейнера как части явной зависимости, а не как требование, которое необходимо выполнять отдельно. Существует несколько вариантов встроенного контейнера в артефакте jar (например, tomcat, jetty, undertow, netty) и их соответствующая конфигурация также обширна, поэтому рекомендуется использовать их в производственной среде (я использовал их много). Однако могут быть определенные моменты, когда вы захотите вместо этого создать войну, например, файл войны можно будет развернуть на любом полноценном сервере приложений EE (Weblogic, Wildfly и т. д.), который может быть предписан вашей средой. С войной у вас увеличивается количество вариантов с точки зрения сервера приложений. Лично для меня весенняя загрузочная банка со встроенным котом оказалась весьма эффективной. При использовании встроенного контейнера вам нужна виртуальная машина с установленной ОС и Java, и все готово.

Однако существует специальное ограничение, связанное с JSP, как уже упоминалось здесь в документации Spring Boot, в которой объясняется веская причина, по которой вам может понадобиться упаковать как war, но при этом запустить как jar.

person Shailendra    schedule 21.05.2019
comment
Я думаю о докеризации банки, но каковы плюсы и минусы по сравнению с использованием tomcat? - person user1955934; 22.05.2019
comment
Опять же, вы можете докеризовать с котом в образе и без кота, а также только с банкой со встроенным котом. Это еще одна вещь, которую нужно сделать при создании образа. Если вы уже используете tomcat с образом java из реестра контейнеров, даже тогда вам может потребоваться скопировать некоторые определенные файлы конфигурации tomcat из вашего проекта в образ. Очевидно, что с докером вы сможете создать полную портативную среду для своего приложения. - person Shailendra; 22.05.2019