当前位置: 首页 > 知识库问答 >
问题:

如何使用环境特定配置创建Spring Cloud Config客户端?

晏修诚
2023-03-14

我遇到了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区域的'myapp-spring-cloud-config-svc'将指向远程git repo

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我可以在这里调用config服务。这里的问题也是一样的。如果我使用eureka查找config,那么“eureka.client.serviceurl.defaultzone”必须在“bootstrap.yml”中定义。请参阅:https://cloud.spring.io/spring-cloud-config/multi/multi_spring_cloud_config_client.html。所以,在这种情况下,我也需要更改eureka url才能将这个服务部署到prod。请帮助我...!!下面是上面提到的每个服务的属性,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个答案

丌官玺
2023-03-14

1)您可以为每个支持的配置文件设置特定于配置文件的引导- .properties (类似于应用程序- .properties ),以避免为每个环境重新构建应用程序。然后只需在启动期间将应用程序配置文件传递给应用程序。Spring将加载正确的引导- .properties 并连接到正确的配置服务器(或eureka等)。示例:

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

2)您可以将URL作为自定义属性(与上面的profile相同)从外部传递,并在bootstrap.properties中使用如下所示的smth。示例:

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}
 类似资料:
  • 本文向大家介绍使用virtualenv创建Python环境及PyQT5环境配置的方法,包括了使用virtualenv创建Python环境及PyQT5环境配置的方法的使用技巧和注意事项,需要的朋友参考一下 一、写在前面   从学 Python 的第一天起,我就知道了使用 pip 命令来安装包,从学习爬虫到学习 Web 开发,安装的库越来越多,从 requests 到 lxml,从 Django 到

  • 使用特定于环境的值配置Grails服务的最佳方法是什么?我认为有两种选择: 从服务类或 我在stackoverflow和其他地方看到了一些展示如何执行#1(在服务中访问grailsApplication)的帖子。其中一个帖子是:将grails应用程序配置注入服务。 两本书有注入属性的示例(方法#2)。本书《Grails 2的权威指南》第10章题为“实际服务”的一节介绍了如何做到这一点,但没有特定于

  • 为使Bash更好地为我们服务,我们需定制bash shell环境。 2.3.1. .bash_profile、.bashrc、和.bash_logout 上面这三个文件是bash shell的用户环境配置文件,位于用户的主目录下。其中.bash_profile是最重要的一个配置文件,它在用户每次登录系统时被读取,里面的所有命令都会被bash执行。.profile(由Bourne Shell和Kor

  • 我们正在将ruby微服务迁移到kubernetes,我们过去在中保存特定于环境的配置。使用kubernetes,您可以为每个服务创建特定于环境的文件,例如等。 虽然kubernetes的pod配置文件能够保存环境变量,但您似乎不能在其中保存结构化数据。 例如,在中,我们有 在kubernetes中继续这种实践并在中打破环境是否合理,或者kubernetes是否有一些其他的最佳实践来为POD提供结构

  • 问题内容: 我使用martini在Go中有一个GAE应用程序。我需要能够设置环境变量以告诉martini它应该使用生产设置进行初始化。根据Python文档,您可以在app.yaml中设置环境变量。我没有在Go docs中 看到任何有关此的内容,但我猜想它应该可以正常工作。 我需要能够将环境变量设置为,但是我只想在实际投入生产时(即)进行操作。有什么方法可以告诉您仅在非开发服务器上运行吗? 问题答案

  • 问题内容: 我正在使用 python 2.7 + virtualenv版本1.10.1 来运行myproject项目。由于其他一些项目要求,我不得不使用其他版本的python( Python 3.5 )和 Django 1.9 。为此,我在用户目录中安装了python。另外,我已经将virtualenv( version-15.1.0 )下载并安装到我的用户目录中。但是每当我尝试创建虚拟环境时,都