乐趣区

关于springboot:springbootmavenplugin的buildimage使用

这个插件的作用就是帮你主动生成跨全平台的镜像服务,无需再本人手动写 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 的外部网络可下载地址,配置好之后就能够一键生成镜像啦

退出移动版