【发布时间】:2018-03-26 21:56:33
【问题描述】:
我正在运行带有 Eureka 服务器的 Spring Cloud,我想让我的应用程序根据使用的端口和给定的范围选择一个端口。
例如,我希望我的第一个实例从端口 8010 开始,第二个在 8011 等。
在 application.properties 中你可以设置一个随机端口 (server.port=0),你可以设置一个静态端口 (server.port=8080) 但我想知道如何让 spring 在一个范围内设置一个随机端口,或者选择基于已使用端口的端口。
例如,这样的事情会起作用:
server.port.random=8080-8090
但这显然不存在。
我也知道可以添加一些逻辑,例如我用过的:
eureka.instance.instance-id=${spring.application.name}:${random.int}
但我不知道如何使两个数字之间的随机工作。另外,random 仍然有可能连续两次设置相同的端口,导致服务器无法启动实例。
有没有办法在 Spring application.properties 中动态设置端口?
【问题讨论】:
-
我想您会遇到这个问题,因为您尝试在本地运行这些项目,并且在运行同一应用程序的多个版本时遇到冲突。将 SERVER_PORT 或 (server.port) 作为环境变量覆盖会得到预期的效果吗? java -jar app.jar --SERVER_PORT=8080; java -jar app.jar --SERVER_PORT=8081
-
@shinjw 好主意,你让我想到了另一个方向。我认为这也将是一个生产问题,但是在生产服务器上,您显然可以在多个 IP 上运行相同的端口。我想我现在可以使用覆盖。
标签: java spring spring-boot spring-cloud spring-cloud-netflix