Интерполяция переменной среды конфигурации Spring Cloud

Я использую spring-cloud-config в своем проекте Spring Boot и не понимаю, как интерполировать переменные среды.

Например, у меня есть переменная MYSQL_PASSWORD, установленная в config server (как переменная среды), и я хочу получить ее от других клиентов, не переопределяя переменную внутри них всех. Это моя конфигурация:

service.yml (в config-сервере)

spring:
  datasource:
     url: jdbc:mysql://mysql:3306/${MYSQL_DATABASE}?autoReconnect=true&useSSL=false
     username: ${MYSQL_USER}
     password: ${MYSQL_PASSWORD}

bootstrap.yml (в клиент)

spring:
  application:
     name: event-service
  cloud:
    config:
      uri: http://config-service:8888
      fail-fast: true       

Если я запускаю свои службы с этой конфигурацией, заполнитель ${MYSQL_***} не интерполируется, и я, очевидно, не могу подключиться к базе данных.

Что мне нужно сделать, чтобы заставить его работать, так это определить переменные среды, такие как MYSQL_***, также в клиенте.

Это странно для меня, так как я хочу, чтобы config-server был центральным хранилищем для всего. Есть ли у вас какие-либо рекомендации?


person Alessandro Dionisi    schedule 08.07.2016    source источник


Ответы (1)


Я предлагаю вам попробовать заменить ${MYSQL_USER} и ${MYSQL_PASSWORD} на ${mysql.user} и ${mysql.password} - таким образом вы будете полагаться на замену свойства Spring Boot по умолчанию.

Хотя я не уверен, что сервер конфигурации поддерживает то, что вы пытаетесь использовать, я никогда не пробовал подобный вариант использования, пожалуйста, напишите ответ с решением, если предложенный мной подход не сработал :)

person Miloš Milivojević    schedule 08.07.2016