2015-12-10 62 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標籤),那麼這可能就是您的原因?當然可以解決我的問題!

相關問題