Поддержание Spring Boot Application в живых - PullRequest
0 голосов
/ 15 января 2020

Фон

У меня есть приложение Spring Boot, которое я развертываю в контейнере Docker.

Приложение должно работать 24/7. В случае сбоя он должен перезапуститься.

У меня есть возможность настроить перезапуск контейнера на cra sh и использовать Kubernetes, но это относительно медленные операции.

У меня сложилось впечатление, что Tomcat, как и IIS на Windows, может перезапускать приложения, которые не работают. Перезагрузка приложения в Tomcat должна быть быстрее, чем перезагрузка всего контейнера.

Итак, я попытался развернуть приложение как взрывную войну в Tomcat.

Но оказывается, что все, что Tomcat делает для меня, - это запуск приложения и обеспечение ручного перезапуска через приложение-менеджер.

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

Мои вопросы:

  1. Можно ли настроить приложение под Tomcat, чтобы в случае его сбоя Tomcat перезапустил его для меня? Как?
  2. Если нет, то какие преимущества, если таковые имеются, у меня есть при использовании Tomcat для размещения моего приложения внутри контейнера вместо простого запуска java -jar в контейнере?

1 Ответ

0 голосов
/ 15 января 2020

Один из вариантов, который вы можете посмотреть, это запуск systemd в контейнере docker, а затем установка весенней загрузки в качестве службы. Автоматический перезапуск весенней загрузки будет обрабатываться systemd. Однако вам нужно перепрыгнуть через несколько обручей, чтобы заставить systemd работать в docker, и будьте осторожны, если вы используете Kubernetes и OpenShift (подробности см. В моей первой ссылке ниже). Некоторые ссылки, которые могут быть полезны ...

https://developers.redhat.com/blog/2019/04/24/how-to-run-systemd-in-a-container/

https://singlebrook.com/2017/10/23/auto-restart-crashed-service-systemd/

...