我用SpringBootAdmin来监视我的springboot应用程序,非常好。但是我需要先启动springboot管理服务器,然后启动包含springboot客户机的应用程序。
有没有办法将spring引导服务器包含到我的spring引导应用程序中,使它们看起来像一个应用程序,这样我就可以启动我的应用程序,然后服务器启动,客户端注册到服务器。最终目的是我的应用程序运行在端口8080上,而spring boot admin运行在端口8081上。
我已经检查了这个线程:如何在同一个应用程序中运行springboot管理客户机和服务器,但它没有包含任何细节,我不能用可能的解决方案实现。
ps:我知道我可以打包SpringBoot管理服务器,然后编写start.sh,先启动服务器,然后启动我的应用程序,但这不是一个很好的解决方案。
有人能帮忙吗?
springboot版本:2.3.4.发布springboot管理版本:2.3.0
3条答案
按热度按时间qzwqbdag1#
从技术上讲,这应该可以将两者集成到一个应用程序中,但我担心您很快就会遇到问题。
但是让我们试试。。。
参考:概念证明github
这种方法的问题:
启动时启动2台服务器
client
左舷8080
,以及端口上的管理服务器8081
客户端和服务器应该有单独的配置让我们从配置开始
我们可以使用
profile
所以我们可以利用特定于配置文件的文件应用程序-客户端.properties
应用程序-管理属性
使用正确的配置文件启动服务器和客户端。
演示应用程序
启动应用程序,我们应该很好。。。
客户
管理服务器
如果您有两个独立的应用程序,那么在
client
你可以启动admin-server
通过一个过程。tktrz96b2#
一个更简单的解决方案是让应用程序在容器中运行,最好将它们隔离,而不是将它们变成一个整体。
您可以使用docker构建应用程序(https://spring.io/guides/gs/spring-boot-docker/)
基本上,每个应用程序都有一个docker文件,如下所示:
使用docker compose启动
依赖将确保您的spring boot客户端在spring boot admin运行正常后启动
s1ag04yj3#
探索spring多模块特性以解决您的用例。
将spring引导服务器作为父项目,并将所有spring引导客户机项目作为单独的模块添加。所有这些单独的模块都只是一个spring引导应用程序。您可以在任何不同的端口上打包和部署这些单独的模块。