spring-boot-maven-plugin的build-image使用
【spring-boot-maven-plugin的build-image使用】这个插件的作用就是帮你自动生成跨全平台的镜像服务,无需再自己手动写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的配置如下:
org.springframework.boot
spring-boot-maven-plugin
2.5.2
/bellsoft-jdk-config:/platform/bindings/bellsoft-jdk-config
这里binding的意思是在构建器(构建器实际上就是个镜像)运行时,带上--volume 参数,把本地的地址映射到容器里的地址,:前面是自己的配置,可以任意,后面是容器里的地址,是固定的。
那本地地址里需要一些配置,主要是一个名为type的文件,内容就是dependency-mapping,然后再是其他的文件,文件名是在paketo-buildpacks/bellsoft-liberica的buildpack.toml里的uri下面的sha256的值,内容就是你jdk的内部网络可下载地址,配置好之后就可以一键生成镜像啦
推荐阅读
- 热闹中的孤独
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 放屁有这三个特征的,请注意啦!这说明你的身体毒素太多
- 一个人的旅行,三亚
- 布丽吉特,人生绝对的赢家
- 慢慢的美丽
- 尽力
- 一个小故事,我的思考。
- 家乡的那条小河
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量