如何配置Spring Cloud Config Server使其使用克隆的远端配置文件
问题根源
你的配置问题核心是两点:一是Spring Cloud Config Server默认仅作为配置提供端,不会自动作为客户端拉取自身托管的远端配置;二是你和其他微服务都没有正确配置Config Client相关参数,且本地配置优先级更高覆盖了远端值。
修复方案
1. 让Config Server自身加载远端配置
- 第一步:在Config Server的pom.xml中引入Config Client和bootstrap依赖(Spring Cloud 2020.0+版本必须加bootstrap依赖):
<!-- Config Client 依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> <!-- Spring Cloud 2020.0+ 版本必须引入该依赖启用bootstrap上下文 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> </dependency>
- 第二步:在resources目录下新建
bootstrap.properties文件,填入以下配置,删除原来application.properties中和远端重复的配置(比如你本地写的config.source=Local Cloud Server必须删掉,否则本地配置优先级更高会覆盖远端值):
# 对应Git仓库配置文件的{application}前缀 spring.application.name=my-config-server # 对应Git仓库配置文件的{profile}后缀 spring.profiles.active=staging # Config Server自身地址,作为客户端拉取配置用 spring.cloud.config.uri=http://localhost:8012 # 允许远端配置覆盖本地配置 spring.cloud.config.override-none=false spring.cloud.config.override-system-properties=true
- 第三步:确认Git仓库中存在匹配的配置文件,命名规则为
{application}-{profile}.properties/yml,比如对应上面的配置就是my-config-server-staging.properties,里面写你的config.source=GitHub等配置。
2. 其他微服务加载远端配置
所有需要拉取Config Server配置的微服务都需要做以下配置:
- 同样引入上面提到的
spring-cloud-starter-config和spring-cloud-starter-bootstrap依赖 - 删除微服务本地
application.properties中和远端重复的配置,新建bootstrap.properties填入:
# 替换为你的微服务应用名,和Git上配置文件前缀对应 spring.application.name=xxx-service # 替换为你的激活环境,和Git上配置文件的profile后缀对应 spring.profiles.active=staging # 替换为你的Config Server部署地址 spring.cloud.config.uri=http://你的Config ServerIP:8012 # 拉取配置失败直接启动失败,方便快速排查问题 spring.cloud.config.fail-fast=true
常见排查点
- 本地
application.properties的优先级高于远端拉取的配置,相同属性名本地配置会直接覆盖远端值,需要拉取远端的属性不要在本地application里配置 - Git仓库配置文件的命名必须严格遵循
{application}-{profile}.properties规则,否则无法匹配拉取 - Spring Cloud 2020.0(代号Ilford)及之后版本默认禁用了bootstrap上下文,必须手动引入
spring-cloud-starter-bootstrap依赖才会加载bootstrap配置,触发远端配置拉取
内容的提问来源于stack exchange,提问作者Tristate
相关产品推荐
相关产品推荐

