使Spring Boot应用程序保持活动状态

时间:2020-01-14 23:59:11

标签: spring-boot docker tomcat application-lifecycle

背景

我有一个要在Docker容器中部署的Spring Boot应用程序。

应用程序必须运行24/7。如果崩溃,则必须重新启动。

我可以选择将容器配置为在崩溃时重新启动,也可以使用Kubernetes,但是这些操作相对较慢。

我给人的印象是,Tomcat(如Windows上的IIS)能够重新启动失败的应用程序。在Tomcat中重新加载应用程序应该比重新加载整个容器更快。

因此,我尝试将应用程序部署为Tomcat中的爆炸战争。

但是事实证明,Tomcat对我来说所做的就是启动应用程序并通过其管理器应用程序提供手动重启。

我了解到,如果更改了指定文件,则Tomcat支持“重新加载”,但这是针对开发环境的,建议不要在生产环境中使用它。

我的问题:

  1. 是否可以在Tomcat下配置我的应用程序,以便它崩溃时,Tomcat会为我重新启动它?怎么样?
  2. 如果没有,使用Tomcat将应用程序托管在容器内而不是简单地在容器中运行java -jar时,我有什么优势?

1 个答案:

答案 0 :(得分:0)

您可能要研究的一个选项是在docker容器中运行systemd,然后将spring boot作为服务安装。然后,springd的自动重启将由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/