maven-jib插件使用说明

使用说明

jib是maven的一款插件,可以实现使用maven命令直接生成tar的镜像包(或者生成镜像,推送到仓库等操作)
Jib的官网地址是https://github.com/GoogleContainerTools/jib

插件如下:

  • container节点用来设置容器的属性,例如对外暴露的端口、jvm参数等
  • from节点用来设置基础镜像
  • to节点用于指定镜像名称和tag
  • allowInsecureRegistries可以用来设置非https的harbor仓库连接

打包

使用mvn clean compile jib:dockerBuild -f pom.xml //会将镜像存入to所指的仓库

还有其他的jib命令:
mvn compile jib:buildTar //去java工程的target目录下,发现生成了名为jib-image.tar的文件

运行

  1. 通过jib生成的java文件会在容器的/app下
  • classes是编译后的文件
  • libs是依赖包文件
  • resources是代码中对应的resources静态文件
  1. 运行时需要在容器的启动脚本中增加startup.sh,存放在代码reousrces下面
    其中使用java - server -cp /app/resources:/app/classes:/app/libs/* 启动类所在路径 启动参数 来启动java程序

  2. 容器的deployment中指定 command参数为:
    command : ["/bin/sh","/app/resources/startip.sh"]

将jib与mvn 构建的生命周期绑定

修改pom.xml增加executions节点,里面设置compile触发jib:dockerBuild

构建命令是mvn compile jib:dockerBuild,可简化为仅用mvn compile就完成镜像构建

【应用场景】:

  1. 假设当前maven工程是父子结构的,有两个子工程A和B,其中A是二方库,提供一个jar包,里面是接口类和Bean类,B是springboot应用,并且B的源码中用到了A提供的接口和Bean;
  2. 上述父子结构的maven工程是常见的工程结构,此时如果要将B构建成Docker镜像,在B的目录下执行mvn compile jib:dockerBuild显然是不行的,因为没有编译构建A,会导致B的编译失败;
  3. 此时最好的做法就是将jib与mvn构建的生命周期绑定,修改B的pom.xml文件,加入executions节点;
  4. 在父工程目录下执行mvn compile,此时maven会先编译构建整个工程,然后再将B工程的构建结果制作成镜像;

参考了https://blog.csdn.net/boling_cavalry/article/details/100179709

posted @ 2023-02-21 15:54  xiaoyu_jane  阅读(986)  评论(0编辑  收藏  举报