使用maven进行集成docker打包成镜像以及推送到docker私服

先水几句

我不会开场啊…默默无闻的送码人.不是吧不是吧.现在还有人用maven打包,然后手动上传jar.然后进行部署吗?你out了.还是用Jenkins集成gitlab进行CI/CD.但是今天要说的是,使用maven进行集成docker插件进行打包镜像.(强行拉回正题,水文真的是除了敲代码之外极佳的爱好了 /捂脸)
docker的好处自然不比赘述.直接准备进入正题.
公司项目就准备使用docker+k8s进行项目部署.周一给我分了一个任务.就是将项目进行发布到docker,并且推送到自建的私服.搭建私服的步骤就不再说了.网上有很多优秀的博客.跟着博客走,搭建起来问题不大.
好,假装已经开好头了.接下来进入正题

docker插件

目前比较流行的maven-docker插件的话.有几种.spotify和fabric8io.我查阅了一些博客后,发现spotify是使用比较多的.所以今天,我们也是使用这款插件来进行打包.

实际使用

1.安装docker,并开启远程访问

怎么安装docker也不多说了.应该是比较简单了.正常安装后,正常启动.然后修改一下配置文件.开启docker的远程访问.

vi /lib/systemd/system/docker.service

然后会出现一段配置,如下图所示:

修改上面的框出来的地方.修改成我这样.
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
(我就知道程序员懒,直接复制给你们 )
然后 :wq 保存退出.
然后就刷新配置

systemctl daemon-reload

重启docker

service docker restart

然后呢,就自己curl测试一下,看是否成功了.

curl http://your's ip:2375/version

出现下面这段描述,就表示成功了.不然的话,就回头重新看看是不是哪里配置错了.比较简单.就不多说了.

maven添加docker插件

            <plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>1.0.0</version><configuration><imageName>${project.artifactId}:latest</imageName><baseImage>java</baseImage>  <!--基于java构建--><entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint><dockerHost>http://your's ip:2375</dockerHost><resources><resource><targetPath>/</targetPath><directory>${project.build.directory}</directory><include>${project.build.finalName}.jar</include></resource></resources><forceTags>true</forceTags>  <!--重复构建相同镜像则覆盖镜像--></configuration></plugin>

将上述代码写入项目的pom.xml文件中,添加到下的标签下.
然后maven import.如果是基于idea开发的话,那么在maven tabs中就可以出现这个插件了.

然后双击docker:builder 就可以实现打包到docker生成镜像images.
然后通过docker run xxx. 就可以将镜像生成容器,进行项目部署了.
或者使用命令行 mvn clean package docker:build 也可以进行操作

将docker命令绑定到maven命令

上面已经可以成功发布镜像到docker容器中了.如果不想这样操作.(因为麻烦),省事,想在maven打包的时候进行发布镜像呢.我们可以通过将docker的一些命令进行绑定到maven的某些命令上.
继续操作pom.xml.
使用标签可以让我们很容易将docker命令绑定到maven命令上.

         <plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>1.0.0</version><executions><execution><id>build-image</id>     <!--定义一个执行命令的id--><phase>package</phase>   <!--绑定mvn的哪个命令--><goals><goal>build </goal>   <!--要执行的命令 --></goals></execution></executions><configuration><imageName>${project.artifactId}:latest</imageName><baseImage>java</baseImage>  <!--基于java构建--><entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint><dockerHost>http://your's ip:2375</dockerHost><resources><resource><targetPath>/</targetPath><directory>${project.build.directory}</directory><include>${project.build.finalName}.jar</include></resource></resources><forceTags>true</forceTags>  <!--重复构建相同镜像则覆盖镜像--></configuration></plugin>

分别使用,,,,,来将docker命令绑定到maven的某个命令上.
这里我们操作了将docker:build 绑定到maven package命令上.
这样的话.我们就可以不用再进行点击maven package 然后又麻烦的再点击docker:build了.
命令行操作的话,也就简化成了 mvn clean package

推送到docker私服仓库

如果我们需要把镜像推送到仓库.首先我们需要给镜像打一个标签.tag(不细说了,因为我不会,假装大家伙都知道,我就是个菜鸡)否则打包会报错


这边的话呢.就需要我们先使用docker tag xxx 为该镜像打一个标签. 然后再使用docker push进行推送了.
但是上一小节说到可以将docker命令绑定到maven命令上.所以借助插件.也不需要我们进行手动的命令操作了. 上代码

         <plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>1.0.0</version><executions><execution><id>build-image</id>     <!--定义一个执行命令的id--><phase>package</phase>   <!--绑定mvn的哪个命令--><goals><goal>build </goal>   <!--要执行的命令 --></goals></execution><execution><id>image-tag</id><phase>package</phase><goals><goal>tag</goal>      <!--tag命令,相当于docker的tag命令--></goals><configuration><image>${project.artifactId}</image>   <!--镜像名--><newName>192.168.170.9:5000/${project.artifactId}:latest</newName>   <!--打的标签名--></configuration></execution><execution><id>package-push</id><phase>package</phase><goals><goal>push</goal>    <!--相当于docker的push命令--></goals><configuration><imageName>私服 ip:私服端口/${project.artifactId}:latest</imageName>  <!--要push的镜像名--></configuration></execution></executions><configuration><imageName>${project.artifactId}:latest</imageName><baseImage>java</baseImage>  <!--基于java构建--><entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint><dockerHost>http://your's ip:2375</dockerHost><resources><resource><targetPath>/</targetPath><directory>${project.build.directory}</directory><include>${project.build.finalName}.jar</include></resource></resources><!--                        <serverId>docker-hub</serverId>     &lt;!&ndash;setting.xml中设置的id&ndash;&gt;--><forceTags>true</forceTags>  <!--重复构建相同镜像则覆盖镜像--></configuration></plugin>

解释一下呢,就是在maven的package命令继续绑定一个tag命令和一个push命令.看着比较简单. 就不细说.主要要注意的点就是push命令中的镜像名.前面加上私服ip和私服端口(别问我为什么,踩坑了) 不加上则是推送到docker.io中央仓库.
然后ip+端口后的名称和tag配置的名称保持一致,就可以了.

遗漏

插件也可以使用Dockerfile进行打包.这个也就是借助maven的可以将DockerFile读取进来进行执行.比较简单也就不细说了.
一篇博客,我感觉应该还是已经把整个流程说完了.其他的流程应该也就是照猫画虎.看着很简单,不过对我来说还是踩了不少坑啊.借此记录一番.同时还是要说一声.一定要多看文档.如果我刚开始的时候有仔细的查阅一下文档,可能可以更快更好的实现整个过程.插件在github.可以自己搜索查阅.
希望有说错说叉的地方.有大佬进行指点一下不胜感激.
借用大佬说的话结尾:你知道的东西越多,你不知道的东西就越多

maven集成docker插件进行打包镜像并推送私服相关推荐

  1. windows下maven打包镜像并推送docker服务器

    1.修改docker服务器配置文件 vim /usr/lib/systemd/system/docker.service 将ExecStart这一行后面加上 -H tcp://0.0.0.0:2375 ...

  2. IDEA集成Docker插件实现项目打包镜像一键部署与Docker CA加密认证

    IDEA集成Docker插件实现项目打包镜像一键部署与Docker CA加密认证 Docker开启远程访问 修改该Docker服务文件 加载配置与重启 验证是否开启成功 IDEA配置docker 编写 ...

  3. Maven编译Docker 镜像并推送到Nexus

    前提条件: 有一台电脑 安装了maven 安装了jdk1.8 以上版本 安装了 git 安装了intellij idea 电脑能上网 有一台nexus 服务器,如果没有可以参考我的另一篇文章:Sona ...

  4. IDEA中使用Docker插件构建镜像并推送至私服Harbor

    IDEA中使用Docker插件构建镜像并推送至私服Harbor 一.开启Docker服务器的远程访问 1.1 开启2375远程访问 1.2 添加harbor镜像配置 1.3 重启docker服务 二. ...

  5. maven集成docker和sonar

    #利用maven与bamboo实现应用实时构建和代码检查 背景介绍: 虽然近年来云计算的火热发展给DevOps带来了一段小高潮,然而这并不是适合所有的应用场景.在实际的项目开发过程中,可能因为组织结 ...

  6. Maven打包SpringBoot项目镜像并推送至私有Harbor仓库

    1 准备工作: 1.1 搭建harbor 因为harbor是基于docker的,并且依赖于docker-compose,所以先要准备好dockers环境再安装好compose工具 1.1.1 dock ...

  7. 1.2 SpringBoot构建Docker镜像并推送到Harbor

    1.修改pom 文件中 引入 dockerfile-maven-plugin 插件 1.1 properties 标签中增加如下: <!--项目名,需要和Harbor中的项目名称保持一致 --& ...

  8. Java Spring Boot 2.0 实战之制作Docker镜像并推送到Docker Hub和阿里云仓库

    内容摘要:大规模集群快速部署Java应用,需要制作Docker镜像,本次课程详细介绍如何制作Java程序的Docker镜像文件,深入解析DockerFile核心参数,以及实践演练把我们制作的Docke ...

  9. springboot学习(六十七) springboot项目通过gradle-docker-plugin插件构建为doker镜像并推送至镜像私服

    文章目录 前言 1.使用gradle部署springboot项目 2.Docker开启远程访问 3.安装镜像私服Harbor 4.gradle中配置插件 前言 springboot从2.4默认提供了打 ...

最新文章

  1. 信通院AI白皮书:硬核干货一文打尽,从技术流派到应用趋势【附下载】
  2. POJ 2485-Highways
  3. 惊了!7 行代码优雅地实现 Excel 文件生成下载功能
  4. 如果我要...(开发版)
  5. OpenCv: 二维坐标的旋转方程
  6. linux发送邮件的功能总结
  7. python threading-单线程 多线程 主线程 子线程 setDeamon join
  8. js判断对象是否为空对象_js对象
  9. c语言666题目,c语言题目及答案
  10. 谷歌微软 IBM 激战云端,亚马逊地位恐将不保?
  11. 机器学习代码实战——朴素贝叶斯(实现垃圾邮件分类)
  12. np.expand_dims
  13. 使用文本编辑器编写c代码
  14. 注册表知识与技巧大全
  15. 以MQL5 编写的EA 交易程序的测试与优化指南
  16. 【51单片机开发板】可调周期、占空比pwm工程
  17. 微信公众服务号如何快速申请注册并认证开通支付功能
  18. Python数据分析-二手车数据用于机器学习二手车价格预测
  19. html日历页面节假日_基于jquery实现可查询节假日万年历代码
  20. The Elements of Style 4ed ---英文写作指南(四)

热门文章

  1. c语言 求矩阵各行元素之和
  2. 计算机软件技术基础课程
  3. mysql数据库安装文件多大_MySQL数据库的安装
  4. 软件开发中 前台、中台、后台英文_实战思考(一):如何搭建业务中台?
  5. 快速画简笔画网站推荐以及思考
  6. sql中删除数据的几种方式
  7. 039.简单的文本编辑器
  8. java热敏POS打印机编程
  9. c语言get()的作用,c语言get函数的用法有哪些
  10. 在setTimeout或者ajax等异步方法中回调函数的写法与调用