Итак, мы используем Spring boot для доставки нашего приложения. Мы используем плагин Jib для мониторинга создания docker изображений и запуска их. Мы используем gradle для создания проекта, и там инструменты разработчика идентифицируются как developmentOnly
зависимость. Как упоминалось в весенних документах на https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using -boot-devtools .
Однако, когда он запускается в контейнере в prod, я все равно вижу, что он время от времени перезапускается. Мой вопрос: действительно ли конфигурация gradle не исключает ее из упаковки? Нужно ли явно устанавливать параметр -Dspring.devtools.restart.enabled=false
?
Решение:
Получается, что это был плагин Gradle Jib, играющий в игры. В то время как в весенней документации есть информация о том, как go удалить зависимость из проекта начальной загрузки gradle. Техника указания developmentOnly
помогает сказать gradle только игнорировать инструменты dev. Плагин jib gradle имеет собственный разум.
Он включает в себя все банки при создании изображения docker, и нет никакого способа исключить какие-либо банки. Единственный разумный способ - это настроить плагин gradle jib в build.gradle, чтобы записать это,
jib {
from {
image 'gcr.io/distroless/java:11'
}
container {
jvmFlags = ['-Xms1G', '-Xmx1G', '-Dspring.devtools.restart.enabled = false']
}
}
Это будет гарантировать, что, даже если jar включен, среда контейнера позаботится о перезапуске.
Ссылка: https://github.com/spring-projects/spring-boot/issues/15382