到目前为止,我使用Spring Boot 2.2并使用jib构建了一个docker映像。
但现在,Spring Boot 2.3发布Release Notes表示,Spring Boot 2.3默认情况下可以使用Paketo buildpack构建Docker镜像。
Spring Boot 2.3通过新功能增强了对Docker的支持这篇文章说,SpringBoot2.3将允许更高效的Docker构建。
我试图用SpringBoot2.3构建一个docker镜像。如下所示,Spring Boot 2.3默认情况下可以构建一个带有一些jvm选项的映像来优化内存。
Container memory limit unset. Configuring JVM for 1G container.
Calculated JVM Memory Configuration: -XX:MaxDirectMemorySize=10M -XX:MaxMetaspaceSize=83555K -XX:ReservedCodeCacheSize=240M -Xss1M -Xmx453020K (Head Room: 0%, Loaded Class Count: 12338, Thread Count: 250, Total Memory: 1.0G)
Adding 127 container CA certificates to JVM truststore
Spring Cloud Bindings Boot Auto-Configuration Enabled
. ____ _ __ _ _
/\ / ___'_ __ _ _(_)_ __ __ _
( ( )___ | '_ | '_| | '_ / _` |
\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |___, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.3.1.RELEASE)
我的问题:Spring Boot 2.3构建的docker镜像比jib构建的好吗?
不是更好,但不同。Jib可以在不安装docker的情况下构建图像。Spring docker构建打开jar(在启动时稍微好一点(,并将依赖关系放入一个层中。当你构建新版本时,它可以重用这些层(如果依赖项没有改变(,所以它只需要用你的应用程序创建一个层(其大小远小于依赖项的大小(。这将导致构建速度更快。但你必须安装本地docker。