(如何)我可以在同一服务器和端口上运行多个Spring Boot应用程序吗?

时间:2020-01-31 18:24:00

标签: spring-boot deployment

我有一个Spring Boot Web应用程序,我想分成大约六个独立的应用程序。一个将在“ /”下的端点处提供主页和登录名,另一个将声明子目录路径(“ /subsystem1”,“ /subsystem2”等)。我有一个非常清楚的想法,我如何使用JWT将身份验证/授权从登录应用程序传递给其他应用程序。

这样做的主要原因是可以在不关闭其他子系统的情况下修改或更新每个子系统。从组织上来说,当只更改一个子系统时,我们不必对整个应用程序进行质量检查。

是否可以将多个Spring Boot实例设置为在同一时间同时在同一服务器上运行,并且它们的终结点具有不同的路径/目录?如何?

我找不到任何重复的问题,但这是两个可能提供线索的相关问题:

可接受的答案:

如果按照 ekalin 的建议,不可能有多个Spring Boot应用程序监听同一个端口,这是我脑力激荡的一些想法(但不知道如何实现) :

  • 也许这些实例可以在不同的端口上运行,但是主应用程序(带有登录页面的实例)可以通过某种方式“转发”或重定向到其他应用程序,从而隐藏了它们的真实URL?例如。 “ localhost:8080 / subsystem1”将是“ localhost:8081 /”的别名。

  • 也许每个应用程序都可以有自己的Docker容器,它们都在共享的Docker网络中运行,而我们使用Docker以某种方式将每个URL路径映射到正确的应用程序?可以使用docker-compose进行设置吗?

  • 我们设置了某种代理服务器,将URL路径重新映射到单独的应用程序。

1 个答案:

答案 0 :(得分:0)

在一个端口上侦听的应用程序不能超过一个。内核如何将软件包发送到哪个应用程序?

您可以在8080上运行诸如nginx之类的http服务器,并在不同的端口中运行每个应用程序,然后根据URL将请求代理到所需的应用程序。