如何从包含多个仓库的配置服务器中获取属性

时间:2019-05-17 10:18:54

标签: spring-boot pivotal-cloud-foundry spring-config

我想从两个git仓库中获取属性。一个是https://username@bitbucket.my.domain.com/share.git-将具有包含一些公用键值对的属性文件,另一个是https://username@bitbucket.my.domain.com/service.git-将具有所有微服务的属性文件。
在部署服务时,配置服务器仅读取一个yml文件(位于https://username@bitbucket.my.domain.com/share.git存储库中)。我缺少什么?如何从另一个仓库(例如https://username@bitbucket.my.domain.com/service.git)读取属性文件?

我想在PCF中部署该服务。因此,我使用以下json在PCF中配置了配置服务器。

{
    "count": 1,
    "git": {
        "label": "feature",
        "uri": "https://username@bitbucket.my.domain.com/share.git",
        "username": "username",
        "password": "password",
        "repos": {
            "configserver": {
                "password": "password",
                "label": "feature",
                "uri": "https://username@bitbucket.my.domain.com/service.git"
                "username": "username"
            }
        }
    }
}

我的服务名称是 LogDemo ,并且弹簧配置文件是 active 。我已经创建了两个yml文件,并将其放置在相应的仓库中。 (我给两个文件都使用了相同的名称,例如 LogDemo-active.yml )。在部署服务时,配置服务器仅读取一个yml文件(位于https://username@bitbucket.my.domain.com/share.git存储库中)。 / env 给我以下内容:

{
  "profiles": [
    "active",
    "cloud"
  ],
  "server.ports": {
    "local.server.port": 8080
  },
  "configService:configClient": {
    "config.client.version": "234e59d4a9f80f035f00fdf07e6f9f16e5560a55"
  },
  "configService:https://username@bitbucket.my.domain.com/share.git/LogDemo-active.yml": {
    "key1": "value1",
    "key2": "value2"
  },
  ...................
  ...................

我缺少什么?如何也从其他仓库(例如https://username@bitbucket.my.domain.com/service.git)读取属性文件?

下面是我的bootstrap.yml

spring:
  application:
    name: LogDemo
  mvc:
    view:
      prefix: /
      suffix: .jsp

这是我的清单文件

---
inherit: baseManifest.yml
applications:
- name: LogDemo
  host: LogDemo
  env:
    LOG_LEVEL: INFO
    spring.profiles.active: active
    TZ: America/New_York
  memory: 1024M
  domain: my.domain.com
  services:
  - config-server-comp

1 个答案:

答案 0 :(得分:0)

使用多个存储库时,将应用的存储库取决于为这些存储库定义的模式。默认模式为<repo-name>/*。因此,将存储库名称更改为LogDemo将激活您应用的存储库,因为应用程序名称spring.application.nameLogDemo

如果一个或多个模式匹配,则将使用匹配模式的存储库。如果没有任何模式匹配,则使用默认值。

此处的文档中有完整的详细信息。

https://cloud.spring.io/spring-cloud-config/single/spring-cloud-config.html#_pattern_matching_and_multiple_repositories

如果不需要或不需要模式匹配功能,则可以使用[composite backend]( https://docs.pivotal.io/spring-cloud-services/2-0/common/config-server/composite-backends.html)。复合后端允许您定义多个Git存储库。请参阅此处的第一个配置示例。

https://docs.pivotal.io/spring-cloud-services/2-0/common/config-server/composite-backends.html#general-configuration