dev*_*eed 14 java spring-profiles spring-boot spring-cloud-config
每个环境都有不同的配置服务器.每个Spring启动应用程序应针对其相应的配置服务器.我试图通过在bootstrap.properties文件中设置配置文件来实现这一点,例如:
spring.application.name=app-name
spring.cloud.config.uri=http://default-config-server.com
---
spring.profiles=dev
spring.cloud.config.uri=http://dev-config-server.com
---
spring.profiles=stage
spring.cloud.config.uri=http://stage-config-server.com
---
spring.profiles=prod
spring.cloud.config.uri=http://prod-config-server.com
Run Code Online (Sandbox Code Playgroud)
然后我设置了cla,-Dspring.profiles.active=dev
但是加载的配置服务器始终是文件中设置的最后一个(即prod配置服务器将在上面的设置中加载,然后如果删除prod,则会加载stage).
是否可以为云配置服务器设置引导配置文件?我按照这个例子,但似乎无法使它工作.对于它的价值,这些配置文件非常适合加载正确的配置(即,如果dev配置文件处于活动状态,则会加载app-name-dev.properties),但不会从正确的配置服务器中提取.
M. *_*num 17
在单个文件中指定不同的配置文件仅支持YAML文件,不适用于属性文件.对于属性文件,请指定特定bootstrap-[profile].properties
于覆盖默认属性的环境bootstrap.properties
.
所以你的情况,你会得到4个文件bootstrap.properties
,bootstrap-prod.properties
,bootstrap-stage.properties
和bootstrap-dev.properties
.
但是,除此之外,您还可以仅提供默认值,bootstrap.properties
并在启动应用程序时通过将a传递-Dspring.cloud.config.uri=<desired-uri>
给您的应用程序来覆盖该属性.
java -jar <your-app>.jar -Dspring.cloud.config.uri=<desired-url>
Run Code Online (Sandbox Code Playgroud)
这将优先于默认配置值.
I solved a similar problem with an environment variable in Docker.
Run Code Online (Sandbox Code Playgroud)
引导程序.yml
spring:
application:
name: dummy_service
cloud:
config:
uri: ${CONFIG_SERVER_URL:http://localhost:8888/}
enabled: true
profiles:
active: ${SPR_PROFILE:dev}
Run Code Online (Sandbox Code Playgroud)
文件
ENV CONFIG_SERVER_URL=""
ENV SPR_PROFILE=""
Run Code Online (Sandbox Code Playgroud)
Docker-compose.yml
version: '3'
services:
dummy:
image: xxx/xxx:latest
restart: always
environment:
- SPR_PROFILE=docker
- CONFIG_SERVER_URL=http://configserver:8888/
ports:
- 8080:8080
depends_on:
- postgres
- configserver
- discovery
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12485 次 |
最近记录: |