在使用idea开发时,直接docker-maven-plugin插件,把项目编译成docker镜像,然后通过docker:push推送到linux服务器,非常简单,快捷,也避免了手动打包,然后拷贝war包到tomcat的麻烦了。以下是流程:
  
  1、先配置docker-maven-plugin插件
  
  在pom文件中加入docker-maven-plugin插件相关配置
  
  绑定docker命令到maven各阶段
  
  这里需要服务器开启2375端口,后面详细描述
  
  具体代码:
  
  <!--docker 插件-->
  
  <docker.repostory>hub.*****.com</docker.repostory>
  
  <docker.registry.name>****</docker.registry.name>
  
  <plugin>
  
  <groupId>com.spotify</groupId>
  
  <artifactId>docker-maven-plugin</artifactId>
  
  <version>0.4.14</version>
  
  <configuration>
  
  <serverId>my-hub</serverId>
  
  <registryUrl>http://${docker.repostory}</registryUrl>
  
  <!--<pushImage>true</pushImage>-->
  
  <imageName>${docker.repostory}/${docker.registry.name}/${project.artifactId}:${project.version}</imageName>
  
  <imageTags>
  
  <imageTag>${project.version}</imageTag>
  
  <imageTag>latest</imageTag>
  
  </imageTags>
  
  <dockerHost>http://192.168.*.*:2375</dockerHost>
  
  <baseImage>daocloud.io/library/java:openjdk-8u40</baseImage>
  
  <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
  
  <exposes>
  
  <expose>8080</expose>
  
  </exposes>
  
  <resources>
  
  <resource>
  
  <targetPath>/</targetPath>
  
  <directory>${project.build.directory}</directory>
  
  <include>${project.build.finalName}.jar</include>
  
  </resource>
  
  </resources>
  
  </configuration>
  
  <!-- 运行命令 mvn clean package docker:build 打包并生成docker镜像 -->
  
  </plugin>
  
  </plugins>
  
  2、配置docker-wagon-plugin插件(非本次方式必须,可以安装,是另外一种部署方式,直接通过wagon命令,直接把jar包推到服务器,然后替换)
  
  具体代码:
  
  <!--wagon plugin 配置-->
  
  <service-path>/work/${project.artifactId}</service-path>
  
  <pack-name>${project.artifactId}.jar</pack-name>
  
  <remote-addr>192.168.*.*:*</remote-addr>
  
  <remote-username>root</remote-username>
  
  <remote-passwd>****</remote-passwd>
  
  <extensions>
  
  <extension>
  
  <groupId>org.apache.maven.wagon</groupId>
  
  <artifactId>wagon-ssh<www.dashugw.com /artifactId>
  
  <version>2.8</version>
  
  </extension>
  
  </extensions>
  
  <plugin>
  
  <groupId>org.codehaus.mojo</groupId>
  
  <artifactId>wagon-maven-plugin</artifactId>
  
  <version>1.0</version>
  
  <configuration>
  
  <fromFile>target/${pack-name}<www.ysptvip1.com /fromFile>
  
  <url><![CDATA[scp://www.xycheng178.com ${remote-username}:www.mtyl127.com${remote-www.tiaotiaoylzc.com passwd}@${remote-addr}${service-path}]]></url>
  
  <commands>
  
  <!-- Kill Old Process www.thd178.com/ -->
  
  <command>kill -9 `ps -ef |grep ${project.artifactId}.jar|grep -v "grep" |awk '{print $2}'`</command>
  
  <!-- Restart jar package,write result into renren.log -->
  
  <command><![CDATA[nohup java -jar ${service-path}/${pack-name} --spring.profiles.active=test > ${service-path}/renren.log 2>&1 & ]]></command>
  
  <command><![CDATA[netstat -nptl]]></command>
  
  <command><![CDATA[ps www.yongshi123.cn-ef | www.dfgjpt.com grep java | grep -v grep]]></command>
  
  </commands>
  
  <!-- 运行命令 mvn clean package wagon:upload-single wagon:sshexec-->
  
  <displayCommandOutputs>true<www.yongshiyule178.com /displayCommandOutputs>
  
  </configuration>
  
  </plugin>
  
  3、完了后,可以在maven-project看到docker插件和wagon插件
  
  4、需要在上面配置的Linux服务器,通过docker开启2375端口,提供外部访问docker
  
  编辑docker文件:/usr/lib/systemd/system/docker.service
  
  vim /usr/lib/systemd/system/docker.service
  
  修改ExecStart行为下面内容
  
  ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock \
  
  重新加载docker配置
  
  systemctl daemon-reload // 1,加载docker守护线程
  
  systemctl restart docker // 2,重启docker
  
  5、关闭防火墙
  
  ss -luntp
  
  systemctl status firewalld
  
  systemctl stop firewalld
  
  systemctl disable firewalld
  
  如果开放成功,访问2375端口,会看到如下效果:
  
  6、安全认证配置
  
  当我们 push 镜像到 Docker 仓库中时,不管是共有还是私有,经常会需要安全认证,登录完成之后才可以进行操作。当然,我们可以通过命令行
  
  docker login -u user_name -p password docker_registry_host
  
  登录,但是对于自动化流程来说,就不是很方便了。使用 docker-maven-plugin 插件我们可以很容易实现安全认证。
  
  首先在 Maven 的配置文件 setting.xml 中增加相关 server 配置,主要配置 Docker registry用户认证信息。
  
  路径:
  
  <servers>
  
  <server>
  
  <id>my-hub</id>
  
  <username>**</username>
  
  <password>***</password>
  
  <configuration>
  
  <email>***@163.com</email>
  
  </configuration>
  
  </server>
  
  7、测试、验证
  
  先配置镜像images版本c-0311
  
  执行完第一步,控制台看到日志,正在构建、打包jar
  
  接下来,执行第二步,镜像生成完成,且推到了内网了
  
  接下来,去内网看下c-0311版本的镜像已存在,则测试成功了!
  
  8、相关报错,以及解决办法:
  
  docker pull 的时候报错 Get https://hub.xxx.com/v1/_ping: dial tcp 192.168.1.8:443: getsockopt: connection refused
  
  内网搭建自己的docker 仓库时遇到这个问题,原因是docker 默认不支持http的registry ,
  
  vim /etc/docker/daemon.json 添加 { "insecure-registries":["hub.***.com"] }
  
  hub.***.com 这是私有docker仓库域名,与前面配置匹配
  
  重启 docker
  
  systemctl restart docker.service
  
  9、搭建docker私有仓库
  
  后补

idea使用docker-maven-plugin插件将项目编译为docker镜像到远程linux服务器 原的更多相关文章

  1. maven(17)-自动发布到远程linux服务器

     发布方式 手工方式:需要做一系列的工作,包括打WAR包,上传到服务器,重启服务器,删除旧文件等 自动方式:一条命令完成以上所有过程 服务器环境 centos7.3和tomcat8,关于cento ...

  2. Jenkins自动化构建vue项目然后发布到远程Linux服务器

    部署Jenkins参照另一篇博客: centos7安装Jenkins及其卸载 一.jenkins相关插件的安装 1.安装Publish Over SSH插件用于SSH连接远程的服务器. 登录 jenk ...

  3. eclipse maven plugin 插件 安装 和 配置

      离线插件 点击下载离线安装包:eclipse-maven-plugin.zip ( for eclipse helios or higher ) .解压缩到任意目录(如这里的plugins目录): ...

  4. Maven plugin 插件

    1.maven-surefire-plugin简介: Maven在构件时执行到测试的生命周期时,会使用maven-surefire-plugin运行测试用例,背后执行的Junit或者TestNG的测试 ...

  5. Maven plugin插件---appassembler-maven-plugin快速配置

    使用appassembler-maven-plugin 打包自定义目录 1.Pom中添加 <plugin> <artifactId>maven-resources-plugin ...

  6. (转)Docker volume plugin - enabled create local volume on docker host

    原文地址:https://hub.docker.com/r/cwspear/docker-local-persist-volume-plugin/ Short Description Create n ...

  7. CentOS中用Nexus搭建maven私服,为Hadoop编译提供本地镜像

    系统: CentOS release 6.6 (Final) Nexus:nexus-2.8.1-bundle.tar.gz,下载地址:https://sonatype-download.global ...

  8. OpenFire后台插件上传获取webshell及免密码登录linux服务器

    1.目标获取 (1)fofa.so网站使用搜索body="Openfire, 版本: " && country=JP,可以获取日本存在的Openfire服务器.如图 ...

  9. SSM项目连接远程Linux服务器的mysql 启动tomcat卡在了 Initializing Spring root WebApplicationContext

    网上查了原因, linux下mysql访问速度缓慢并且ssh连接缓慢的原因 解决办法: 1.linux ssh连接慢 最近发现ssh连接的时候却很慢,ping的速度非常好,让人误以为是ssh连接不上. ...

随机推荐

  1. Luogu4697 CEOI2011 Balloons 单调栈

    传送门 题意:给出$N$个气球,从左往右给出它们的$x_i$与$r_i$.现在从左往右给它们充气,每一个气球在充气的过程中始终在$x_i$点与地面相切,且最大半径为$r_i$.如果在充气的过程中气球与 ...

  2. EZ 2018 07 06 NOIP模拟赛

    又是慈溪那边给的题目,这次终于没有像上次那样尴尬了, T1拿到了较高的暴力分,T2没写炸,然后T3写了一个优雅的暴力就203pts,Rank3了. 听说其它学校的分数普遍100+,那我们学校还不是强到 ...

  3. [Spark][Python]groupByKey例子

    Spark Python 索引页 [Spark][Python]sortByKey 例子 的继续: [Spark][Python]groupByKey例子 In [29]: mydata003.col ...

  4. [Oracle]Oracle 各产品的 生命周期

    http://www.oracle.com/us/support/library/lifetime-support-technology-069183.pdf

  5. LOJ #6074. 「2017 山东一轮集训 Day6」子序列

    #6074. 「2017 山东一轮集训 Day6」子序列 链接 分析: 首先设f[i][j]为到第i个点,结尾字符是j的方案数,这个j一定是从i往前走,第一个出现的j,因为这个j可以代替掉前面所有j. ...

  6. windows平台下编辑的内容传到linux平台出现中文乱码的解决办法

    现象说明:在windows下编辑的内容,上传到linux平台下出现中文乱码.如下: 在windows平台编写haha.txt文件,内容如下: 上传到linux平台,出现中文乱码,如下: 基本上面出现的 ...

  7. Redis常用操作--------SortedSet(有序集合)

    1.ZADD key score member [[score member] [score member] ...] 将一个或多个 member 元素及其 score 值加入到有序集 key 当中. ...

  8. Linux内核分析第五周学习总结

    扒开系统调用的三层皮(下) 20135237朱国庆+ 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/UST ...

  9. 《蹭课神器》Alpha版使用说明

    <蹭课神器>是一款方便大学生蹭课的软件,目前实现了查询课表的功能,还没有实现搜索和提醒的功能.有待进一步的开发! 登录之后点击查询操作,查询课表. 课表显示如下

  10. mapreduce 中 map数量与文件大小的关系

    学习mapreduce过程中, map第一个阶段是从hdfs 中获取文件的并进行切片,我自己在好奇map的启动的数量和文件的大小有什么关系,进过学习得知map的数量和文件切片的数量有关系,那文件的大小 ...