简介java应用开发的容器化,需要制作docker镜像。要是用户本地没安装docker,可以使用jib制作出带有镜像的tar文件。
jib提供了四种使用方式:
maven插件:jib-maven-plugin
gradle插件:jib-gradle-plugin
java库: jlib core
jib cli
jib构建工具主要包含了四个强大的功能。
build :提供了创建镜像并推送到远程仓库功能。
buildtar :提供创建一个包含镜像的tar文件功能。
dockerbuild:提供创建docker镜像到本地功能。
exportdocker:rcontext提供创建dockerfile功能。
当编译构建是在没有docker环境的情况下构建,使用build命令和dockerbuild命令并不能制作出镜像,只能使用buildtar命令制作出一个包含镜像的tar文件。
使用maven插件将java应用构建为docker镜像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应用的镜像的详细内容。