Spring云配置服务器使用多存储库,但客户端无法读取

时间:2018-01-26 06:35:31

标签: spring-boot spring-cloud

最近,我为公司业务构建了一个spring cloud配置服务器,配置服务器配置如flw:

spring:
  application:
    name: config-server
  cloud:
    config:
      label: master
      server:
        git:
          uri: http://gitlab.ugirls.com:9999/commonconfig.git
          search-paths: db,redis

          force-pull: true
          default-label: master
          repos:
              project1:
                    pattern: project1-*
                    cloneOnStart: true
                    uri: http://gitlab.ugirls.com:9999/project1.git

              project2: 
                    pattern: project2-*
                    cloneOnStart: true
                    uri: http://gitlab.ugirls.com:9999/project2.git

因为我的项目有一些常见的配置文件,所以我把它放到commonconfig.git。

commonconfig.git 包含datasource-dev.properties,datasource-prod.properties

project1.git 包含application-dev.yml,application-prod.yml

到目前为止,看起来没问题,请访问http://localhost:8411/project1-application.xml即可。

{
name: "project1-application",
profiles: [
"dev"
],
label: "master",
version: "978c1dc67a6bb6672b7e7ae7620f2c5794897a31",
state: null,
propertySources: [
{
name: "http://gitlab.ugirls.com:9999/project1.git/application-dev.yml",
}...

并访问http://localhost:8411/datasource/dev仍然可以。

但是,.... 我的配置客户端项目:bootstrap.yml就像流程一样:

spring:
  application:
    name: project1-application
  cloud:
    config:
      label: master
      profile: ${spring.profiles.active}
      uri: http://localhost:8411/
      name: project1-application,datasource

它只读取application-dev.yml而不读取datasource.properties 像这样的日志:

Located environment: name=project1-application, profiles=[dev], label=master, version=978c1dc67a6bb6672b7e7ae7620f2c5794897a31, state=null
2018-01-26 13:54:26.613  INFO [datasource,redis_chat,redis_main,redis_rank,,,] 6064 --- [           main] b.c.PropertySourceBootstrapConfiguration : Located property source: CompositePropertySource [name='configService', propertySources=[MapPropertySource {name='configClient'}, MapPropertySource {name='http://gitlab.ugirls.com:9999/project1.git/application-dev.yml'}, MapPropertySource {name='http://gitlab.ugirls.com:9999/project1.git/application.yml'}]]

一旦我改变了 spring.cloud.config.name = datasource

它只会加载datasource-dev.properties

任何人都可以解释它,或者给我一些建议吗?谢谢

1 个答案:

答案 0 :(得分:0)

Spring云配置服务器现在支持“复合存储库”设置,该设置可让您添加包含共享属性的存储库。

请参阅文档here

对您来说,这就像:

spring:
  profiles:
    active: composite
  cloud:
    config:
      server:
        composite:
        -
          type: git
          # Default URI is required to be present, even if not used
          uri: blahblah

          repos:
              project1:
                    pattern: project1-*
                    cloneOnStart: true
                    uri: http://gitlab.ugirls.com:9999/project1.git

              project2: 
                    pattern: project2-*
                    cloneOnStart: true
                    uri: http://gitlab.ugirls.com:9999/project2.git
        -
          type: git
          uri: http://gitlab.ugirls.com:9999/commonconfig.git
          search-paths: db,redis
相关问题