一、jib是什么
Jib 是 Google 开发的 Java 容器镜像构建工具,支持 Maven 和 Gradle。
它最大特点是:
- 不需要 Dockerfile
- 不需要本地安装 Docker 守护进程(daemonless)
- 构建速度快(它会将依赖/资源/类分层,增量构建超级快)
- 镜像层次更合理(比常见手写 Dockerfile 更高效)
二、jib简单使用


1、配置文件
xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.bolingcavalry</groupId>
<artifactId>hellojib</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>hellojib</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!--使用jib插件-->
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>1.3.0</version>
<configuration>
<!--from节点用来设置镜像的基础镜像,相当于Docerkfile中的FROM关键字-->
<from>
<image>
registry.cn-hangzhou.aliyuncs.com/xxx/xxx:openjdk-8-jdk-alpine
</image>
</from>
<to>
<!--镜像名称和tag,使用了mvn内置变量${project.version},表示当前工程的version-->
<image>zhk/hellojib:${project.version}</image>
</to>
<allowInsecureRegistries>true</allowInsecureRegistries>
<!-- 可以下的写法-->
<!-- <to>-->
<!-- <image>${docker.register.url}/${project.artifactId}:${project.version}</image>-->
<!-- <tags>-->
<!-- <!–版本号–>-->
<!-- <tag>${project.version}</tag>-->
<!-- </tags>-->
<!-- <auth>-->
<!-- <!–在docker-hub或者阿里云上的账号和密码–>-->
<!-- <username>${docker.register.username}</username>-->
<!-- <password>${docker.register.password}</password>-->
<!-- </auth>-->
<!-- </to>-->
<!--容器相关的属性-->
<container>
<!-- 执行替换运行的命令-->
<!-- <mainClass>${scripts_bootMain}</mainClass>-->
<!-- <entrypoint>-->
<!-- <shell>sh</shell> <!– 使用 shell 来执行命令 –>-->
<!-- <option>-c</option> <!– sh -c 参数,后面跟字符串命令 –>-->
<!-- <arg>-->
<!-- java ${JAVA_OPTS} -cp /app/resources/:/app/classes/:/app/libs/* ${scripts_bootMain}-->
<!-- </arg>-->
<!-- </entrypoint>-->
<!--jvm内存参数-->
<creationTime>USE_CURRENT_TIMESTAMP</creationTime>
<jvmFlags>
<jvmFlag>-Xms4g</jvmFlag>
<jvmFlag>-Xmx4g</jvmFlag>
</jvmFlags>
<!--要暴露的端口-->
<ports>
<port>8080</port>
</ports>
</container>
</configuration>
</plugin>
</plugins>
</build>
</project>
2、启动配置
打包到本地镜像仓库
shell
clean package jib:dockerBuild

打包推送到远程服务器
shell
-Djib.disableUpdateChecks=true
-Ddocker.register.url=xxxx #镜像地址
-Ddocker.register.username=xxx
-Ddocker.register.password=xxx
shell
clean package jib:build

三、注意
1、清除无用镜像

shell
docker image prune
2、加速构建速度
可以看参考地址第二个中的小结四:提升构建速度
3、maven编译构建不需要创建脚本

4、父子节点构建

四、参考地址
https://blog.csdn.net/boling_cavalry/article/details/94355659
https://blog.csdn.net/boling_cavalry/article/details/100179709