У нас есть проект Spring boot gradle, работающий внутри контейнера docker, который использует том docker. Функция живой перезагрузки Spring devtools используется со следующими свойствами.
spring.devtools.restart.enabled=true
spring.devtools.restart.additional-paths=.
spring.devtools.restart.additional-exclude=src/main/java/**
Мы используем том docker для изменения исходных файлов внутри контейнера. Файл src/main/resources/reload-trigger.txt
будет обновляться всякий раз, когда потребуется оперативная перезагрузка.
Журналы контейнеров показывают, что перезагрузка работает, но изменения не влияют. При перезапуске контейнера отражаются изменения.
Например, шаги:
- Создание файла контроллера внутри тома с помощью API GET и обновление файла триггера
- GET API не работает в почтальоне
- Остановлен и запущен контейнер
- Теперь API работает
Dockerfile
FROM gradle:5.6.2-jdk8
WORKDIR /app
COPY . /app
RUN ./gradlew getDeps
EXPOSE 8000
CMD ["gradle", "bootRun", "-PskipDownload=true"]