2016-12-05 24 views
5

Her ortam için farklı yapılandırma sunucularımız var. Her bir önyükleme uygulaması, karşılık gelen yapılandırma sunucusunu hedeflemelidir. Ben, bootstrap.properties dosyasında örneğin profillerini belirleyerek bunu başarmak için çalıştık:Bootstrap dosyasında farklı Spring profillerini doğru şekilde nasıl ayarlıyorsunuz (Spring Boot için farklı Cloud Config Sunucularını hedeflemek için)?

spring.application.name=app-name 
spring.cloud.config.uri=http://default-config-server.com 

--- 
spring.profiles=dev 
spring.cloud.config.uri=http://dev-config-server.com 

--- 
spring.profiles=stage 
spring.cloud.config.uri=http://stage-config-server.com 

--- 
spring.profiles=prod 
spring.cloud.config.uri=http://prod-config-server.com 

Sonra cla -Dspring.profiles.active=dev set ancak yüklenen yapılandırma sunucusu hep dosyası (yani prod config sonuncusu kümesidir sunucu yukarıdaki ayarlarda yüklenir ve prod kaldırılırsa sahne yüklenir).

Bulut yapılandırma sunucusu için önyükleme profilleri ayarlanabiliyor mu? this example'u takip ettim, ancak çalışmayı başaramıyorum. Buna değer olduğu için, bu profiller doğru yapılandırmayı yüklemek için harika çalışır (yani dev profili etkinse app-name-dev.properties yüklenir), ancak uygun yapılandırma sunucusundan çekilmiyor.

+1

. Sadece gerekli (geçersiz kılınan) yapılandırmayı içerecek 'bootstrap- [profile] .properties' i.e.' bootstrap-dev.properties' ekleyin. –

+0

@ M.Deinum Bu doğru cevap, teşekkürler! Bunu ekle ve kabul edeceğim. –

cevap

5

Tek bir dosyada farklı profillerin belirtilmesi yalnızca YAML dosyaları için desteklenir ve özellik dosyaları için geçerli değildir. Özellik dosyaları için, varsayılan bootstrap.properties'dan gelen özellikleri geçersiz kılmak için bootstrap-[profile].properties ortamına özgü bir ortam belirtin. Bu durumda, 4 dosya bootstrap.properties, bootstrap-prod.properties, bootstrap-stage.properties ve bootstrap-dev.properties'u alırsınız.

Ancak bunun yerine uygulama uygulamanıza bir -Dspring.cloud.config.uri=<desired-uri> geçirerek özelliğini geçersiz başlatırken da sadece varsayılan bootstrap.properties sağlamak ve ki içinde.

java -jar <your-app>.jar -Dspring.cloud.config.uri=<desired-url> 

Bu, varsayılan yapılandırılmış değerler üzerinde önceliğe sahip olacaktır.

0
I solved a similar problem with an environment variable in Docker. 

bootstrap.yml sadece (afaik) yaml dosyaları değil mülkiyet dosyaları için çalışacak

spring: 
    application: 
    name: dummy_service 
    cloud: 
    config: 
     uri: ${CONFIG_SERVER_URL:http://localhost:8888/} 
     enabled: true 
    profiles: 
    active: ${SPR_PROFILE:dev} 

Dockerfile

ENV CONFIG_SERVER_URL="" 
ENV SPR_PROFILE="" 

Docker-compose.yml

version: '3' 

services: 

    dummy: 
    image: xxx/xxx:latest 
    restart: always 
    environment: 
     - SPR_PROFILE=docker 
     - CONFIG_SERVER_URL=http://configserver:8888/ 
    ports: 
     - 8080:8080 
    depends_on: 
     - postgres 
     - configserver 
     - discovery