我遇到了Spring Cloud Config Server和Eureka Server Profiling的问题 .
假设我有3个服务,其名称("spring.application.name")为:
myapp-svc
myapp-spring-cloud-config-svc
myapp-spring-eureka-svc
我想在2个区域(dev和prod)中部署每个服务 . 在Dev区域中,每个服务都将在localhost上运行,并且在prod中它将具有一些不同的URL . dev区域中的'myapp-spring-cloud-config-svc'将指向本地git repo,而在prod区域中它将指向远程git repo . 我可以有2个配置:
1)当我在本地启动'myapp-svc'服务时,它应该连接到dev中的'myapp-spring-cloud-config-svc' . 我可以通过设置spring.cloud.config.uri =来做到这一点 . 但是这个设置的问题是需要在bootstrap.properties中定义属性 . 因此,如果将'myapp-svc'部署到prod,我将不得不更改配置uri那里指向prod配置服务,这反过来需要另一个构建创建 . 这似乎不是一个好的解决方案,如果我有50个应用程序相关的服务,我不能在prod部署之前在每个服务中更改此属性 . 我尝试在'myapp-svc'的application-dev.properties中设置spring.cloud.config.uri但它不起作用 . 根据文档,它必须在bootstrap中更改 .
So, how do I implement this without having to create new build for prod ?
2)我可以先打电话给eureka然后使用eureka我可以在这里调用配置服务 . 这里的问题也是一样的 . 如果我使用eureka查找配置,则必须在"bootstrap.yml"中定义"eureka.client.serviceUrl.defaultZone" . 看到:https://cloud.spring.io/spring-cloud-config/multi/multi__spring_cloud_config_client.html所以,在这种情况下,我需要在将此服务部署到prod之前更改eureka URL . 请帮帮我... !!以下是每个上述服务的属性yml:
1) myapp-svc:
1.1)bootstrap.yml
spring:
application:
name: myapp-svc
cloud:
config:
discovery:
enabled: true
serviceId: myapp-spring-cloud-config-svc
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8762/eureka/
server:
port: 8082
2) myapp-spring-cloud-config-svc:
2.1)application-dev.properties:
spring.cloud.config.server.git.uri=file:///C:/config-repo
eureka.client.serviceUrl.defaultZone=http://localhost:8762/eureka
2.2)application-prod.properties:
spring.cloud.config.server.git.uri=https://github.com/<mygit Repo>
2.3)bootstrap.proerties:
spring.application.name=myapp-spring-cloud-config-svc
server.port=8888
3) myapp-spring-eureka-svc
3.1)bootstrap.proerties
spring.application.name=myapp-spring-eureka-svc
server.port=8762
1 回答
1)您可以为每个支持的配置文件提供特定于配置文件的
bootstrap-<profile>.properties
(例如application-<profile>.properties
),以避免为每个环境重建应用程序 . 然后在启动期间将应用程序配置文件传递给您的应用程序 . Spring将加载正确bootstrap-<profile>.properties
并将连接到正确的配置服务器(或尤里卡等) . 例:2)您可以将您的URL作为自定义属性从外部传递(与上面的配置文件相同),并在
bootstrap.properties
中像这样使用 . 例:然后在启动期间通过
--config.server.url= ...
.3)您可以在启动期间以相同的方式传递Spring属性 . 例:
4)您可以使用系统env变量 . 例: