使用jib插件为Java应用构建镜像的方法

 更新时间:2022年08月18日 16:43:51   作者:EndeavourOne  
这篇文章主要介绍了使用jib插件为Java应用构建镜像,要是用户本地没安装docker,可以使用jib制作出带有镜像的tar文件,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下

简介

Java应用开发的容器化,需要制作docker镜像。要是用户本地没安装docker,可以使用jib制作出带有镜像的tar文件。

Jib提供了四种使用方式:

jib构建工具主要包含了四个强大的功能。

  • build :提供了创建镜像并推送到远程仓库功能。
  • buildTar :提供创建一个包含镜像的tar文件功能。
  • dockerBuild:提供创建docker镜像到本地功能。
  • exportDocker:rContext提供创建dockerfile功能。

当编译构建是在没有docker环境的情况下构建,使用build命令和dockerBuild命令并不能制作出镜像,只能使用buildTar命令制作出一个包含镜像的tar文件。

使用Maven插件将Java应用构建为docker镜像

想了解更多参数,阅读官方文档。https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin

1.修改需要制作镜像的项目代码:找到pom文件声明jib插件,
pom.xml文件中声明Jib插件:

<!--使用jib插件-->
            <plugin>
                <groupId>com.google.cloud.tools</groupId>
                <artifactId>jib-maven-plugin</artifactId>
                <version>1.3.0</version>
                <configuration>
                    <!--from节点用来设置镜像的基础镜像,相当于Docerkfile中的FROM关键字-->
                    <from>
                        <!--使用openjdk官方镜像,tag是8-jdk-stretch,表示镜像的操作系统是debian9,装好了jdk8-->
                        <image>openjdk:8-jdk-stretch</image>
                    </from>
                    <to>
                        <!--镜像名称和tag,使用了mvn内置变量${project.version},表示当前工程的version-->
                        <image>lendea/hellojib:${project.version}</image>
                    </to>
                    <!--容器相关的属性-->
                    <container>
                        <!--jvm内存参数-->
                        <jvmFlags>
                            <jvmFlag>-Xms256m</jvmFlag>
                            <jvmFlag>-Xmx256m</jvmFlag>
                        </jvmFlags>
                        <!--要暴露的端口-->
                        <ports>
                            <port>8081</port>
                        </ports>
                    </container>
                </configuration>
            </plugin>
  • from标签:设置基础镜像,相当于dockerfile中的FROM关键字,这里推荐使用SWR中的镜像,构建时下载速度快并且稳定。
  • to标签:设置制作出来的镜像的镜像名称和tag。
  • container标签:设置容器的相关属性,jvm内存参数,端口等。

2.创建构建任务并执行

# -Dmaven.test.skip=true: 跳过单元测试
# -U: 每次构建检查以来更新,可避免缓存中快照版本依赖不更新问题,但会牺牲部分性能
# -e -X: 打印调试信息,定位疑难构建问题时建议使用此参数构建
# -B: 以batch模式运行,可避免日志打印出现ArrayIndexOutOfBoundsException异常

mvn compile jib:buildTar -Dmaven.test.skip=true -U -e -X -B

在java项目的target目录下,可以看到生成的tar镜像。

3.使用tar镜像
执行docker load -i xxx.tar 命令将tar文件的镜像加载到本地镜像仓库,再使用docker run --rm -p 8081:8081 lendea/hellojib:0.0.1等命令启动容器来测试功能。

到此这篇关于使用jib插件为Java应用构建镜像的文章就介绍到这了,更多相关jib插件构建镜像内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java程序命令行参数用法总结

    Java程序命令行参数用法总结

    这篇文章主要介绍了Java程序命令行参数用法总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Java实现非阻塞式服务器的示例代码

    Java实现非阻塞式服务器的示例代码

    这篇文章主要为大家详细介绍了如何利用Java实现一个简单的非阻塞式服务器,文中的示例代码讲解详细,具有一定的学习价值,需要的可以参考一下
    2023-05-05
  • Spring Cloud中FeignClient实现文件上传功能

    Spring Cloud中FeignClient实现文件上传功能

    这篇文章主要为大家详细介绍了Spring Cloud中FeignClient实现文件上传功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • java可变参数(不定向参数)的作用与实例

    java可变参数(不定向参数)的作用与实例

    这篇文章主要给大家介绍了关于java可变参数(不定向参数)的作用与实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • SpringBoot中利用AOP和拦截器实现自定义注解

    SpringBoot中利用AOP和拦截器实现自定义注解

    本文将通过拦截器+AOP实现自定义注解,在这里拦截器充当在指定注解处要执行的方法,aop负责将拦截器的方法和要注解生效的地方做一个织入,感兴趣的可以尝试一下
    2022-06-06
  • 一文教你如何判断Java代码中异步操作是否完成

    一文教你如何判断Java代码中异步操作是否完成

    在许多应用程序中,我们经常使用异步操作来提高性能和响应度,这篇文章主要介绍了几种常见的方法来判断Java代码中异步操作是否完成,希望对大家有所帮助
    2024-02-02
  • java中@JSONField和@JsonProperty注解的使用说明及对比

    java中@JSONField和@JsonProperty注解的使用说明及对比

    @JSONField与@JsonProperty隶属两个不同的包,前者是阿里系的fastjson包,后者是spring boot官方使用的jackson包,本文主要介绍了java中@JSONField和@JsonProperty注解的使用说明及对比,感兴趣的可以了解一下
    2023-11-11
  • Java多线程ForkJoinPool实例详解

    Java多线程ForkJoinPool实例详解

    这篇文章主要介绍了Java多线程ForkJoinPool实例详解,涉及forkjoin框架的相关内容,需要的朋友可以参考下。
    2017-09-09
  • SpringBoot中的main方法注入service

    SpringBoot中的main方法注入service

    这篇文章主要介绍了SpringBoot中的main方法注入service操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Java中使用MyBatis-Plus操作数据库的实例

    Java中使用MyBatis-Plus操作数据库的实例

    本文主要介绍了Java中使用MyBatis-Plus操作数据库的实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-02-02

最新评论