操作系统版本
[root@node02 ~]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core)
docker版本
[root@node02 ~]# docker -v Docker version 18.06.3-ce, build d7080c1
接上一篇: 【Docker之使用maven插件【配置方式】构建并推送镜像到私有仓库】 ,这次我们通过 maven 插件和Dockerfile混合方式来生成镜像并推送到私有仓库
本文内容和上一篇只有以下几个地方不一样,前提是你的docker私有仓库搭建好了,并且开启了api服务,可以参考: 【Docker之用docker-compose安装registry和docker-registry-web私有仓库和仓库前端】
-
在自己项目里新建一个 Dockerfile文件,可以放在自定义的目录里:
-
编辑maven pom文件,我们使用 docker-maven-plugin,和上一篇区别在添加了 dockerDirectory 标签指定了Dockerfile的路径,并且配置相关的只保留 resources 标签,私有仓库相关的不变;
com.spotify docker-maven-plugin 1.1.0 192.168.126.99:5000 http://192.168.126.99:2375 true true 192.168.126.99:5000/${project.artifactId}:${project.version} ${project.basedir}/docker_file /${app.dir} ${project.build.directory} ${project.build.finalName}.jar classes/application.yaml
Dockerfile 内容:
FROM openjdk:8-jre COPY /app/tailf-web-1.2.1-SNAPSHOT.jar /app/tailf-web-1.2.1-SNAPSHOT.jar COPY /app/classes/application.yaml /app/log/ WORKDIR /app CMD ["java", "-jar", "/app/tailf-web-1.2.1-SNAPSHOT.jar"]原理
docker-maven-plugin插件在配置dockerDirectory后会忽略掉pom里的baseImage, maintainer, cmd and entryPoint配置,我们可以使用 resources 标签准备构建镜像的文件;
其大致流程:
1、resources标签指定的资源会被复制到编译路径下的docker目录里
2、根据Dockerfile定义,调用docker api即 dockerHost 标签配置的服务器构建镜像(可以设置成本地,如果本地有docker服务并开启了docker api)
3、docker api所在的服务器构建镜像完毕,将镜像推送到私有仓库
构建推送:clean - build - docker:build
日志:
Dockerfile方式比pom里配置的方式相比,个人觉得更喜欢Dockerfile方式
文档1、docker-maven-plugin文档
【spotify/docker-maven-plugin】 https://github.com/spotify/docker-maven-plugin
2、代码上传到了 【码云】 ,可点击查看
over~



