Итак, мы используем Spring boot для доставки нашего приложения. Мы используем плагин Jib для мониторинга создания образов докеров и их запуска. Мы используем gradle для сборки проекта, и инструменты разработчика идентифицируются как developmentOnly
зависимость. Как упоминалось в весенних документах по адресу https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-devtools.
Однако, когда он запускается в контейнере в продукте, я все еще вижу, что он время от времени перезапускается. Мой вопрос в том, действительно ли конфигурация gradle не исключает его из упаковки. Нужно ли мне явно устанавливать параметр -Dspring.devtools.restart.enabled=false
?
Решение :
Оказывается, это был плагин gradle jib для игр. В то время как в документации Spring рассказывается о том, как удалить зависимость от проекта загрузки Gradle Spring. Техника указания developmentOnly
помогает только сказать gradle игнорировать инструменты разработчика. Плагин jib gradle имеет собственное мнение.
Он включает все jar-файлы при создании образа докера, и нет никакого способа исключить jar-файлы. Единственный разумный способ - настроить плагин 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