Как правильно установить различные профили Spring в файле bootstrap (для Spring Boot для разных серверов Cloud Config)?

мы имеем различные серверы конфигурации в окружающую среду. Каждое приложение spring boot должно нацеливаться на соответствующий сервер конфигурации. Я попытался достичь этого, установив профили в начальной загрузке.файл свойств, например:

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

и затем я установил cla -Dspring.profiles.active=dev но загруженный сервер конфигурации всегда является последним, установленным в файле (т. е. сервер конфигурации prod будет загружен в вышеуказанных настройках, а затем, если prod будет удален, будет загружен этап).

это можно ли установить профили начальной загрузки для сервера cloud config? Я следовал но, похоже, не может заставить его работать. Для чего это стоит, эти профили отлично работают для загрузки правильной конфигурации (т. е. app-name-dev.свойства будут загружаться, если профиль dev активен), но не извлекаются из соответствующего сервера конфигурации.

2 ответов


указание разных профилей в одном файле поддерживает только файлы YAML и не применяется к файлам свойств. Для файлов свойств укажите конкретную среду bootstrap-[profile].properties для переопределения свойств по умолчанию bootstrap.properties.

так что в вашем случае вы получите 4 файла bootstrap.properties, bootstrap-prod.properties, bootstrap-stage.properties и bootstrap-dev.properties.

однако вместо этого вы также можете предоставить только значение по умолчанию bootstrap.properties и при запуске приложения переопределите свойство, передав -Dspring.cloud.config.uri=<desired-uri> для вашего приложения.

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

это будет иметь приоритет над значением по умолчанию заданные значения.


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

ушко.в формате YML

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=""

Докер-сочинять.в формате 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