因此,我们正在使用Spring boot交付我们的应用程序。我们使用Jib插件监视创建的docker映像并运行它们。
我们使用gradle构建项目,并且将开发工具标识为developmentOnly
依赖项。
就像https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-devtools的spring文档中所述。
但是,当它在prod的容器中运行时,我仍然看到它不时地重新启动。
我的问题是gradle配置是否真的不能将其排除在包装之外。
我是否需要显式设置-Dspring.devtools.restart.enabled=false
参数?
解决方案:
原来,这是玩游戏的gradle三角帆插件。
Spring文档上有关于如何从gradle spring boot项目中删除依赖项的信息。指定developmentOnly
的技术仅有助于告诉gradle忽略开发工具。臂架gradle插件有自己的想法。
构建docker映像时,它包含所有jar,并且无法排除任何jar。唯一合理的方法是在build.gradle中自定义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