这个插件的作用就是帮你主动生成跨全平台的镜像服务,无需再本人手动写Dockerfile文件了,它是基于buildpacks这个标准,有一系列的生命周期,和maven差不多意思。失常来说,如果你是在互联网的话,它会主动的检测你我的项目的语言,运行时环境(python、nodejs、jvm)等等,主动从网络下载对应的依赖,一键即可生成,切实是十分好用!
它的一些生命周期和配置能够在https://github.com/paketo-bui...这里看到,首先spring-boot-maven-plugin2.5.2版本应用的默认构建器是paketobuildpacks:builder:base,这里咱们能够去看看github上的配置GitHub - paketo-buildpacks/base-builder,次要是builder.toml配置文件,外面有很多不同语言运行时环境的构建包(这里定义了很多,理论执行时就会检测,应用特定的构建包) 。
我是用java,所以就会用到paketo-buildpacks/java这里包,持续找https://github.com/paketo-bui...,咱们看buildpack.toml文件,外面又有很多依赖,这里个别的spring-boot我的项目只会用到5个依赖("paketo-buildpacks/ca-certificates", "paketo-buildpacks/bellsoft-liberica", "paketo-buildpacks/executable-jar","paketo-buildpacks/dist-zip","paketo-buildpacks/spring-boot",),咱们次要看bellsoft-liberica这个,这个是jdk相干的配置
如果是这么简略,那就没必要写一篇博客了,我遇到的问题是须要在外部网络应用,这时候就会报错,它默认会从下面说的bellsoft-liberica/buildpack.toml里配置的uri下载,就会报错,这里找了半天,终于找到了答案,不过解决方案须要在spring-boot-maven-plugin的2.5.x以上版本才反对。maven的配置如下:
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.5.2</version> <configuration> <image> <bindings> <binding> /bellsoft-jdk-config:/platform/bindings/bellsoft-jdk-config </binding> </bindings> </image> </configuration></plugin>
这里binding的意思是在构建器(构建器实际上就是个镜像)运行时,带上--volume 参数,把本地的地址映射到容器里的地址,:后面是本人的配置,能够任意,前面是容器里的地址,是固定的。
那本地地址里须要一些配置,次要是一个名为type的文件,内容就是dependency-mapping,而后再是其余的文件,文件名是在paketo-buildpacks/bellsoft-liberica的buildpack.toml里的uri上面的sha256的值,内容就是你jdk的外部网络可下载地址,配置好之后就能够一键生成镜像啦