У меня есть установка, в которой я использую следующее:
В настоящее время я передаю секреты Swarm клиентам через специальный скрипт, который считывает файлы, помещенные в / run / secrets /, и создает файл /config/bootstrap.properties. В итоге это выглядит так:
spring.cloud.config.username=user
spring.cloud.config.password=password
Команда по умолчанию для моего образа Docker следующая:
java -Djava.security.egd=file:/dev/./urandom -jar /${appName}.jar --spring.cloud.bootstrap.location=file:/config/bootstrap.properties"
Отлично. Это работает без проблем. Приложение вроде бы гласит:
Сейчас. Я перемещаю приложения на Spring Boot 2.0.3 с Finchley.RELEASE, и это ломается.
Что сейчас происходит:
Проблема в том, что свойства, которые были установлены во внутреннем bootstrap.yml, теперь отсутствуют для приложения, поэтому оно взрывается при запуске. Я смог воспроизвести его вне среды контейнера, сделав то же самое; укажите в приложении внешний bootstrap.properties. Если я скопирую свойства bootstrap.yml в bootstrap.properties, он будет работать нормально. Кроме того, если я не предоставлю файл внешних свойств, то внутренний bootstrap.yml сработает без проблем. Так что либо то, либо другое!
Я также попытался изменить местоположение начальной загрузки, чтобы включить местоположения по умолчанию, но безуспешно:
-- spring.cloud.bootstrap.location=file:/config/bootstrap.properties,classpath:,classpath:/config,file:,file:config/
Есть идеи, где искать дальше? Может быть, мне не хватает нового свойства spring.cloud.config? Или кто-нибудь может подтвердить, какое поведение является правильным? Предполагая, что они устранили потенциальную лазейку в Финчли, я могу просто положить этому конец и поискать другое решение. Если он «сломан» в Финчли, я думаю, нужно сообщить о проблеме?




Что ж, еще несколько копаний показали, что похоже, что это новое поведение:
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Migration-Guide
The behavior of the spring.config.location configuration has been fixed; it previously added a location to the list of default ones, now it replaces the default locations. If you were relying on the way it was handled previously, you should now use spring.config.additional-location instead.
Это не выглядело специально для Spring Cloud, но мне было нечего терять. Изменение моей команды java для использования этого нового свойства помогло:
--spring.config.additional-location=file:/config/bootstrap.properties
Спасибо.