В моем приложении Spring Boot я хочу вывести свойства для запуска в контейнере Docker. При первом развертывании свойства, которые в настоящее время находятся в my-server/src/main/resources/application.yml
, загружаются и используются приложением, как и ожидалось. Все отлично работает.
Однако моя проблема заключается в том, что мне нужно, чтобы эти свойства могли обновляться по мере необходимости, поэтому мне нужен доступ к файлу application.yml
один раз в контейнере Docker. Но на данный момент он не включен в каталог build/docker/
перед запуском задачи buildDocker
, поэтому не будет скопирован или доступен после первого развертывания.
Итак, я попытался скопировать файл Yaml в каталог сборки docker/
, скопировать его в доступный каталог (/opt/meanwhileinhell/myapp/conf
) и использовать свойство spring.config.location
, чтобы передать местоположение конфигурации в Jar в мой Dockerfile:
ENTRYPOINT ["java",\
...
"-jar", "/app.jar",\
"--spring.config.location=classpath:${configDirectory}"]
Глядя на команду, выполняющуюся в контейнере Docker, я вижу, что это так, как и ожидалось:
/app.jar --spring.config.location=classpath:/opt/meanwhileinhell/myapp/conf]
Однако, когда я обновляю свойство в этом файле и перезапускаю контейнер Docker, он не фиксирует изменения. Права доступа к файлам:
-rw-r--r-- 1 root root 618 Sep 5 13:59 application.yml
Документация documentation гласит:
Когда настраиваемые местоположения конфигурации настроены, они используются в дополнение к местоположениям по умолчанию. Пользовательские местоположения ищутся до местоположения по умолчанию.
Кажется, я не могу понять, что я делаю неправильно или неправильно истолковал, но, возможно, более важно, является ли это правильным способом вывода конфигурации для сценария Docker этого типа?