来自 Spring 配置服务器的配置覆盖服务器端口 vm 参数
Configuration from Spring Config Server overrides server port vm argument
我有以下服务:
- Spring 云配置服务器
- 尤里卡发现服务
- 事件服务(spring 启动应用程序)
我使用"Config First"模式。这意味着我先启动配置服务器,然后再启动发现服务。
然后我运行事件服务。它从配置服务器获取配置。在配置中我指定 server.port 属性 等于 8081.
我看到我的事件服务正在发现服务中注册。
当我尝试再启动一个事件服务实例时,问题出现了。要在不同的端口上 运行 它,我使用 -Dserver.port vm 参数。所以我的命令看起来像:
java -jar event-service.jar -Dserver.port=8082
但是应用程序启动失败,说8081已经在使用中。似乎事件服务使用来自配置服务器的配置,并且此配置优先于 VM 参数。但是我在想应该是vice-verca
您的命令行参数顺序错误:system variable
必须在 jarfile 之前:
$ java -jar -Dserver.port=8082 event-service.jar
3 种从命令行指定属性的方法
- 环境变量:
$ server_port=8082 java -jar event-service.jar
- 系统变量:
$ java -jar -Dserver.port=8082 event-service.jar
- 命令行参数:
$ java -jar event-service.jar --server.port=8082
请注意,对于 environment variable
,dots
被替换为 underscores
。
来源:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html
您必须将客户端属性更改为 spring.cloud.config.override-none=true
,默认设置为 false。根据文档:
Flag to indicate that when allowOverride
is true, external properties should take lowest priority, and not override any
existing property sources (including local config files). Default false.
我有以下服务:
- Spring 云配置服务器
- 尤里卡发现服务
- 事件服务(spring 启动应用程序)
我使用"Config First"模式。这意味着我先启动配置服务器,然后再启动发现服务。
然后我运行事件服务。它从配置服务器获取配置。在配置中我指定 server.port 属性 等于 8081.
我看到我的事件服务正在发现服务中注册。
当我尝试再启动一个事件服务实例时,问题出现了。要在不同的端口上 运行 它,我使用 -Dserver.port vm 参数。所以我的命令看起来像:
java -jar event-service.jar -Dserver.port=8082
但是应用程序启动失败,说8081已经在使用中。似乎事件服务使用来自配置服务器的配置,并且此配置优先于 VM 参数。但是我在想应该是vice-verca
您的命令行参数顺序错误:system variable
必须在 jarfile 之前:
$ java -jar -Dserver.port=8082 event-service.jar
3 种从命令行指定属性的方法
- 环境变量:
$ server_port=8082 java -jar event-service.jar
- 系统变量:
$ java -jar -Dserver.port=8082 event-service.jar
- 命令行参数:
$ java -jar event-service.jar --server.port=8082
请注意,对于 environment variable
,dots
被替换为 underscores
。
来源:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html
您必须将客户端属性更改为 spring.cloud.config.override-none=true
,默认设置为 false。根据文档:
Flag to indicate that when
allowOverride
is true, external properties should take lowest priority, and not override any existing property sources (including local config files). Default false.