Docker使用 Maven 插件构建镜像的方法
通过Maven的Docker插件可以构建Docker镜像
快速入门
在pom.xml中添加Docker插件
com.spotify docker-maven-plugin 0.4.13 linyuantongxue/docker-demo:0.0.1 //指定镜像名称,linyuantongxue是仓库名称(对应DockerHub用户名),docker-demo是镜像名称(对应DockerHub仓库名),0.0.1是标签名称(相当于版本号)java //指定基础镜像,等同FROM指令["java","-jar","app.jar"] //等同于ENTRYPOINT指令/ ${project.build.directory} //指定要复制的根目录,${project.build.directory}表示target目录${project.build.finalName}.jar //指定要复制的文件,${project.build.finalName}.jar指打包后的jar文件
执行以下命令构建Docker镜像
mvncleanpackagedocker:build
执行dockerimages查看刚才构建的镜像
读取Dockerfile文件
读取Dockerfile文件就不必指定baseImage和entrypoint
com.spotify docker-maven-plugin 0.4.13 ${project.basedir}/src/main/docker //指定要读取的Dockerfile文件linyuantongxue/docker-demo:0.0.1 //指定镜像名称,linyuantongxue是仓库名称(对应DockerHub用户名),docker-demo是镜像名称(对应DockerHub仓库名),0.0.1是标签名称(相当于版本号)/ ${project.build.directory} //指定要复制的根目录,${project.build.directory}表示target目录${project.build.finalName}.jar //指定要复制的文件,${project.build.finalName}.jar指打包后的jar文件
将插件绑定在某个phase执行
很多场景下有这样的需求,比如执行mvncleanpackage时插件就自动构建Docker镜像,要实现这点只需要将插件的goal绑定在某个phase即可
maven命令格式是:mvnphase:goal,phase绑定了目标的构建生命周期阶段,goal配置的执行目标
只需添加如下配置:
com.spotify docker-maven-plugin 0.4.13 //在maven生命周期package中执行build构建目标//$$$$$$$$$$$$$$$$华丽的分割线$$$$$$$$$$$$$$$$ build-image package build linyuantongxue/docker-demo:0.0.1 java ["java","-jar","app.jar"] / ${project.build.directory} ${project.build.finalName}.jar
推送镜像
使用Maven插件也可以推送镜像到DockerHub
修改Maven全局配置信息文件settings.xml,配置DockerHub用户信息
docker-hub #DockerHub该网站的用户名必须全部为小写才正确linyuantongxue 765371578Ly 765371578@qq.com
修改pom文件
com.spotify docker-maven-plugin 0.4.13 linyuantongxue/docker-demo:0.0.1 java ["java","-jar","app.jar"] / ${project.build.directory} ${project.build.finalName}.jar docker-hub
执行以下命令,添加pushImage标识,表示推送镜像
mvncleanpackagedocker:build-DpushImage
上面例子中通过imageName指定镜像名称和标签,也可以借助imageTags元素更为灵活的指定镜像名称和标签,这样就可以为同一个镜像指定两个标签
linyuantongxue/docker-demo 0.0.1 latest
也可在构建命令时使用dockerImageTags参数指定标签名称
mvncleanpackage:build-DpushImageTags-DdockerImageTags=latest-DdockerImageTags=another-tag
若需要重复构建相同标签名称的镜像,可将forceTags设置为true
//....... true
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。