问题描述
Spring Boot 2.3引入了对使用Spring Boot maven / gradle插件构建优化的Docker映像的支持。 spring-boot:build-image
目标做了很多事情:
是否可以使用较旧的Spring Boot版本为模块复制这些步骤?更好的是,这些步骤可以直接集成到Maven / Gradle构建中吗?
解决方法
作为分层jar功能(包括layers.idx
文件生成和对Cloud Native Buildpacks / Paketo.io的spring-boot-maven-plugin支持)was introduced in Spring Boot 2.3我会说,您不能真正使用标准工具将其降级。
但我想您可以尝试自己生成layers.idx
文件-甚至选择一个默认文件,因为您的应用布局可能毕竟不会发生太大变化。一个示例是(不使用SNAPSHOT
依赖关系):
- "dependencies":
- "BOOT-INF/lib/"
- "spring-boot-loader":
- "org/"
- "snapshot-dependencies":
- "application":
- "BOOT-INF/classes/"
- "BOOT-INF/classpath.idx"
- "BOOT-INF/layers.idx"
- "META-INF/"
将此文件放置在适当的位置(意味着将其放置在target
文件夹中(例如,您可以使用一个简单的Maven插件将其自动化),pack CLI应该可以将其拾取。因此,install pack CLI并运行Paketo构建,而无需像这样自己使用spring-boot-maven-plugin
:
pack build yourAppNameHere --path . --builder paketobuildpacks/builder:base
我自己并没有真正尝试过这种方法-如果目录结构在旧版Spring Boot版本中有很大不同,也许您会遇到问题。但我希望听到一些反馈!