2016-04-29 59 views
6

我使用docker compose來運行我所有的微服務。對於每個服務我給它一個簡短的主機名。設置春天雲中bootstrap.yml的配置文件以定位不同的配置服務器

version: '2' 

services: 
    config: 
    image: springbox-config-server 
    restart: always 
    ports: 
    - "8890:8890" 

    discovery: 
    image: springbox-eureka 
    restart: always 
    ports: 
    - "8763:8763" 

因此,在我的微服務中,我必須以其短主機名爲目標configserver。

spring: 
    application: 
    name: myservice 
    cloud: 
    config: 
     uri: http://config:8890 
     fail-fast: true 

但是,當我在沒有docker的IDE中本地運行它們時,無法解析短主機名。

所以我正在尋找一個解決方案,根據我的環境定位不同的配置服務器。

回答

12

我找到解決方案。基本上,我們使用spring配置文件來豐富bootstrap文件。例如

spring: 
    application: 
    name: myservice 
    cloud: 
    config: 
     uri: http://config:8890 
     fail-fast: true 

--- 
spring: 
    profiles: development 
    cloud: 
    config: 
     uri: http://localhost:8890 

好消息是我們不必重寫配置文件中的所有屬性。默認屬性是繼承的。例如,當啓用開發概要文件時,我的應用程序名稱將從默認的名稱always myservice繼承。

要啓動情景模式,具有以下特性

-Dspring.profiles.active=development 
啓動服務