Jib插件使用
前端时间在工作时用到了jib插件,所以写一遍文章来记录使用中的问题。
简介
jib是谷歌开源的一款插件,可以将java程序构建成docker 镜像或oci镜像,我司是用来构建docker image镜像的。jib拥有maven 和 gradle 两个插件版本,我所使用的是 maven 版本。
谷歌官方是这样介绍jib的。
Jib builds optimized Docker and OCI images for your Java applications without a Docker daemon - and without deep mastery of Docker best-practices. It is available as plugins for Maven and Gradle and as a Java library.
GitHub地址:https://github.com/GoogleContainerTools/jib
Docker file maven 插件
docker 的容器化操作为我们提供了不少便利,通过dockerfile文件可以构建一个和文件提供者一模一样的容器,这样就屏蔽因为依赖环境而带来的问题。下面将介绍目前知名的几款插件。
dockerfile-maven
Github地址 https://github.com/spotify/dockerfile-maven
不过此项目已经归档,不在维护
docker-maven-plugin
Github地址 https://github.com/fabric8io/docker-maven-plugin 这个项目目前还在持续更新中,star也有1.6k
jib
Github地址 https://github.com/GoogleContainerTools/jib 谷歌开源的,实力毋庸置疑,star有11.9k
dockerfile-maven因为已经归档不再更新了,所以并没有进行考虑,docker-maven-plugin 因为版本迭代的比较慢,所以最终选择了谷歌的jib,在我搞好了jib以后公司为了和老项目保持一致,又让我换成了docker-mavne-plugin,未来或许写一篇docker-maven-plugin插件的使用文章。
使用
jib插件无需写dokcerfile文件,所以参数都用pom中的参数来完成,可以像写dockerfile一样写pom文件。
jib中所有的参数都在readme文件中列出,所以在使用时遇到问题可以去读读readme文件,地址 https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>3.1.4</version>
<configuration>
<from>
<image>harbor.xxxxx</image>
</from>
<to>
<image>harbor.xxx</image>
</to>
<container>
<workingDirectory>/application</workingDirectory>
<volumes>/application/log</volumes>
<environment>
<TZ>Asia/Shanghai</TZ>
</environment>
<ports>
<port>8084</port>
</ports>
<mainClass>com.glory.cms.Application</mainClass>
<entrypoint>
<arg>/bin/sh</arg>
<arg>-c</arg>
<arg>java ${JAVA_OPTS} -cp /app/resources/:/app/classes/:/app/libs/* com.glory.cms.Application</arg>
</entrypoint>
</container>
<allowInsecureRegistries>true</allowInsecureRegistries>
</configuration>
<executions>
<execution>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>