Инициализация журнала загрузки Spring с помощью Spring Cloud Kubernetes

#spring-boot #spring-cloud-kubernetes

#spring-загрузка #spring-cloud-kubernetes

Вопрос:

Загрузка Spring 2.2.6 — ВЫПУСК

В моем application.yml , у меня есть эта строка :

 logging.config: classpath:my-logback-config.xml
  

Это работает хорошо, spring прекрасно получает конфигурацию

В моем my-logback-config.xml у меня есть эта строка :

 <springProperty name="LOG_HOST" source="config.logHost" />
<springProperty name="LOG_PORT" source="config.logPort" />
  

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

 SPRING_CONFIG_ADDITIONAL_LOCATION=file:/my-env.properties
  

Но когда я включаю Spring Cloud Kubernetes, происходит сбой с UnknowHostException : "LOG_HOST_IS_UNDEFINED" cannot be resolved. (значение LOG_HOST используется для настройки сетевого приложения)

Почему включение Spring Cloud Kubernetes изменяет поведение инициализации журнала?

Похоже, что значения из SPRING_CONFIG_ADDITIONAL_LOCATION еще не загружены.

Я не могу загрузить это значение из ConfigMap, поскольку Spring Cloud Kubernetes не был инициализирован на момент инициализации ведения журнала.

Ответ №1:

Наконец, проблема заключалась в том, что переменная ENV SPRING_CONFIG_ADDITIONAL_LOCATION была установлена на папку, а не на файл в контейнере.

Локально, в Windows, установка ‘SPRING_CONFIG_ADDITIONAL_LOCATION’ для файла или папки, похоже, работает, но в образе Docker (RH linux) это оказывает влияние.

Когда SPRING_CONFIG_ADDITIONAL_LOCATION значение установлено в папку, значения вложенных файлов «.properties» игнорируются.

Я могу воспроизвести (исправить) проблему, изменив свой файл docker :

 ENV SPRING_CONFIG_ADDITIONAL_LOCATION="/mnt/properties/application.properties"
  

Для

 ENV SPRING_CONFIG_ADDITIONAL_LOCATION="/mnt/properties/"