首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >外部化- spring cloud config server多个git repo配置

外部化- spring cloud config server多个git repo配置
EN

Stack Overflow用户
提问于 2020-01-04 03:53:09
回答 1查看 555关注 0票数 0

我正在尝试为生产环境设置一个spring-cloud-config-server。我想要读取多个git代码库,所以我在src/ application.yml /resources中的配置服务器中提供了以下配置

代码语言:javascript
复制
spring:
  application:
    name: config-server
  profiles:
    active: git
  cloud:
    config:
      server:
        git:
          uri: https://somedomain.com/project1/project1.git
          username: project1user
          password: project1password
          repos:
            project2:
              pattern: project2/*
              uri: https://somedomain.com/project2/project2.git
              username: project2user
              password: project2password
              searchPaths:
                - 'src/main/resources'

现在,我希望将配置服务器的此配置具体化。

我可以通过如下环境变量提供主要的git repo (https://somedomain.com/project1/project1.git)属性

代码语言:javascript
复制
spring.cloud.config.server.git.uri=https://somedomain.com/project1/project1.git
spring.cloud.config.server.git.username=project1user
spring.cloud.config.server.git.password=project1password

但是其他的git repo属性呢?如果通过环境变量传递复杂的map式结构,将会非常繁琐。

通过此配置的其他repos的最佳可能方式是什么?将一些配置作为环境变量传递还有其他缺点,比如这些属性不能在运行时刷新。

有没有可能额外的存储库配置是从主git (https://somedomain.com/project1/project1.git)本身的某个配置文件中挑选出来的?

EN

回答 1

Stack Overflow用户

发布于 2020-02-12 20:24:33

Spring Cloud Config Server提供了多个存储库的配置,可以通过url访问它们,就像我们对一个git存储库所做的那样。配置服务器将按模式获取每个配置,因此路径中的标签{application}将是查找正确存储库的关键。就像我做的那样:

spring: cloud: config: server: git: uri:https://github.com/solivaf/config-properties-foo

现在我们应该添加额外的存储库,如下所示:

spring: cloud: config: server: git: uri:https://github.com/solivaf/config-properties-foo repos: appFoo: pattern: app-foo uri:https://github.com/solivaf/config-properties-bar

重新启动配置服务器并执行以下请求。

代码语言:javascript
复制
    $ curl localhost:8080/fooapp/prod
{
  "name": "fooapp",
  "profiles": [
    "prod"
  ],
  "label": null,
  "version": "8686fb74f9af0aead98bd20d6e20e84a37028781",
  "state": null,
  "propertySources": [
    {
      "name": "https://github.com/solivaf/config-properties-foo/application-prod.yml",
      "source": {
        "bar.foo": "testProdPropertiesYml"
      }
    },
    {
      "name": "https://github.com/solivaf/config-properties-foo/application.yml",
      "source": {
        "bar.foo": "testPropertiesYml"
      }
    }
  ]
}

现在我们可以看到用于应用程序fooapp的存储库,因为我们没有任何模式映射到此应用程序,配置服务器将使用默认应用程序,现在如果我们指定在配置服务器属性文件中映射的模式app-foo,我们应该会得到另一个存储库作为响应。

代码语言:javascript
复制
   $ curl localhost:8080/app-foo/prod
{
  "name": "app-foo",
  "profiles": [
    "prod"
  ],
  "label": null,
  "version": "f34ced0565042be4cf87c937c1dab2703e0b8ed2",
  "state": null,
  "propertySources": [
    {
      "name": "https://github.com/solivaf/config-properties-bar/app-foo-prod.yml",
      "source": {
        "foo.bar": "testProdPropertiesYml"
      }
    },
    {
      "name": "https://github.com/solivaf/config-properties-bar/application-prod.yml",
      "source": {
        "foo.bar": "testProdPropertiesYml"
      }
    },
    {
      "name": "https://github.com/solivaf/config-properties-bar/application.yml",
      "source": {
        "foo.bar": "testPropertiesYml"
      }
    }
  ]
}

现在,我们有了在属性文件中映射的正确存储库,以及表示我们的app-foo应用程序的所有文件。响应顺序表示列表中第一个文件的优先级最高的文件的层次结构。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59584565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档