1

Spring Boot 2.3 引入了对使用 Spring Boot maven/gradle 插件构建优化的 Docker 映像的支持。目标做了spring-boot:build-image很多事情:

  • 创建图层索引
  • 调用 Paketo buildpack
  • 构建 OCI 映像
  • 等等

有没有办法使用较旧的 Spring Boot 版本为模块复制这些步骤?更好的是,这些步骤可以直接集成到 maven/gradle 构建中吗?

4

1 回答 1

0

由于Spring Boot 2.3 中引入了分层 jars 功能(包括layers.idx文件生成和 spring-boot-maven-plugin 对 Cloud Native Buildpacks / Paketo.io 的支持) ,我想说你不能用标准工具真正降级它。

但我想您可以尝试自己生成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 应该能够选择它。因此,安装 pack CLI并运行 Paketo 构建,而无需spring-boot-maven-plugin像这样使用自己:

pack build yourAppNameHere --path . --builder paketobuildpacks/builder:base

我自己并没有真正尝试过这种方法 - 如果旧 Spring Boot 版本中的目录结构有很大不同,也许你会遇到问题。但我希望能听到一些反馈!

于 2020-12-04T10:59:47.097 回答