Как правильно установить различные профили 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