Я создал проект spring starter с gradle в качестве менеджера зависимостей, а также включающий spring-boot-dev-tools . Моя цель - создать изображение docker, чтобы при каждом изменении файла java в контейнере docker должна была быть прямая перезагрузка . Это хорошо работает со следующими конфигурациями.
Dockerfile
FROM gradle:5.6.2-jdk8
WORKDIR /app
COPY . /app
RUN gradle build
EXPOSE 8080
CMD ["sh", "start.sh"]
start. sh
#!/bin/bash
gradle --version
gradle build --continuous &
gradle bootRun
Это работает
Один из файлов моего контроллера выглядит следующим образом.
@RestController
public class MainController {
@GetMapping("/")
String test() {
return "Test Success";
}
}
Получение "Test Success" в браузере при переходе к localhost:8080
. Когда файл /app/.../MainController.java
внутри docker контейнера изменяется на return "Updated";
, это изменение затрагивается автоматически.
Это проблема
Даже если в Dockerfile RUN gradle build
, docker run
команда с этим образом, кажется, снова загружает зависимости gradle из-за команды gradle build --continuous
или gradle bootRun
.
Я хочу docker run
команда быстрая, как будто уже загружены все зависимости. Пожалуйста, предложите обходной путь. Требуется перезагрузка в реальном времени.