gpt4 book ai didi

spring-boot - 如何使用 env 特定配置创建 Spring Cloud Config Client?

转载 作者:行者123 更新时间:2023-12-05 01:42:35 26 4
gpt4 key购买 nike

我遇到了 Spring Cloud Config Server 和 Eureka Server Profiling 的问题。
假设我有 3 个服务,它们的名称(“spring.application.name”)为:

myapp-svc
myapp-spring-cloud-config-svc
myapp-spring-eureka-svc

我想在 2 个区域(开发和生产)中部署每项服务。在 Dev 区域,每个服务都将在本地主机上运行,​​而在生产环境中,它会有一些不同的 url。开发区域中的“myapp-spring-cloud-config-svc”将指向本地 git 存储库,而在生产区域中它将指向远程 git 存储库。我可以有 2 个配置:

1) 当我在本地启动“myapp-svc”服务时,它应该连接到开发中的“myapp-spring-cloud-config-svc”。 我可以通过设置 spring.cloud.config.uri = 来做到这一点。 但此设置的问题是需要在 bootstrap.properties 中定义该属性。 因此,如果将“myapp-svc”部署到 prod,我将不得不更改那里的配置 uri 以将其指向 prod 配置服务,而这又需要另一个构建创建。 这似乎不是一个好的解决方案,如果我有 50 个与应用程序相关的服务,我无法在产品部署之前更改每个服务中的此属性。 我尝试在“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因此,在这种情况下,我也需要在将此服务部署到产品之前更改 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) 您可以拥有特定的配置文件 bootstrap-<profile>.properties (如 application-<profile>.properties )针对每个受支持的配置文件,以避免为每个环境重建您的应用程序。然后只需在启动期间将应用程序配置文件传递给您的应用程序。 Spring 将加载正确 bootstrap-<profile>.properties并将连接到正确的配置服务器(或 Eureka 等)。示例:

java -jar your-app.jar --spring.profiles.active=dev

2) 您可以将您的 URL 作为自定义属性从外部传递(与上面的配置文件相同)并在 bootstrap.properties 中有这样的内容.示例:

spring.cloud.config.uri=${config.server.url}

然后通过--config.server.url= ...在启动期间。

3) 您可以在启动期间以相同的方式传递 Spring 属性。示例:

java -jar your-app.jar --spring.cloud.config.uri= ...

4) 您可以使用系统环境变量。示例:

spring.cloud.config.uri=${SYSTEM_ENV_CLOUD_CONFIG_URI}

关于spring-boot - 如何使用 env 特定配置创建 Spring Cloud Config Client?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51613104/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com