2015-12-10 63 views
7

我有以下春季云配置application.yml:如何让Spring Cloud Config服务器检测特定分支的配置?

spring: 
    application: 
    name: configserver 
    cloud: 
    config: 
     server: 
     git: 
      uri: https://[email protected]/xyz/microservices-configs.git 
      username: xyz 
      password: xyz 
      basedir: target/configs 
server: 
    port: 8881 

以下是我的用户的microService的bootstrap.yml

spring: 
    application: 
    name: userservice 
    cloud: 
    config: 
     uri: http://localhost:8881/ 

方案 - 1
当我打配置服务器在浏览器这样的:
http://localhost:8881/development/userservice-development.yml
它正确地提供文件。当我看着basedir即目标/ config中,我看到:

- userservice.yml 
- gateway.yml 

正是我想要的,因为我只有在开发分支加入这个两个文件。

方案 - 2
当我使用运行我userservice微服务项目下面的命令:从主分支
mvn clean spring-boot:run -Dspring.profiles.active=development

它将从混帐正确的文件,但它结帐!但是不是来自我期待的开发分支。我期待正确吗? (FYI我在开发和生产yml在主分支)

所以问题是,我们如何去使用配置服务器?是否有任何配置,我们可以设置为只从该特定分支获取yml?我相信我们需要设置一些标签,因为根据文档,默认标签是主标签。任何人都可以让我知道我们如何去设置标签在上述情况?

回答

10

按照documentation,你想在你的配置客户端设置配置为:

spring.cloud.config.label=mybranch 

mybranch是在你的git仓库现有的分支。

+1

谢谢。我将标签全部设置为配置服务器。那么这是关于在config客户端应用程序中的绑定吗?在服务器或客户端的'spring.cloud.config'属性之间做出决定并不困难。 – agpt

+1

我的分支有一个斜杠(/),那么我该如何配置?我试过'spring.cloud.config.label = release/1.0.0,release_1.0。0,释放(_)1.0.0',但不起作用 –

+0

我想通了。它应该是'release(_)1.0.0' –

5

配置服务器旨在使用配置文件来分隔环境。 示例:

/{application}/{profile}[/{label}] 
/{application}-{profile}.yml 
/{label}/{application}-{profile}.yml 
/{application}-{profile}.properties 
/{label}/{application}-{profile}.properties 

分支使配置不一致。

配置服务器的概念基于12因子配置(http://12factor.net/config)。

查看详细原因。

5

如果客户端未通过属性spring.cloud.config.server.git.default-label指定配置服务器使用的默认分支(更一般地为Git标签),那么这可能就是您的原因?当然可以解决我的问题!

相关问题