idea使用docker-maven-plugin插件将项目编译为docker镜像到远程linux服务器 原
在使用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服务器 原的更多相关文章
- maven(17)-自动发布到远程linux服务器
发布方式 手工方式:需要做一系列的工作,包括打WAR包,上传到服务器,重启服务器,删除旧文件等 自动方式:一条命令完成以上所有过程 服务器环境 centos7.3和tomcat8,关于cento ...
- Jenkins自动化构建vue项目然后发布到远程Linux服务器
部署Jenkins参照另一篇博客: centos7安装Jenkins及其卸载 一.jenkins相关插件的安装 1.安装Publish Over SSH插件用于SSH连接远程的服务器. 登录 jenk ...
- eclipse maven plugin 插件 安装 和 配置
离线插件 点击下载离线安装包:eclipse-maven-plugin.zip ( for eclipse helios or higher ) .解压缩到任意目录(如这里的plugins目录): ...
- Maven plugin 插件
1.maven-surefire-plugin简介: Maven在构件时执行到测试的生命周期时,会使用maven-surefire-plugin运行测试用例,背后执行的Junit或者TestNG的测试 ...
- Maven plugin插件---appassembler-maven-plugin快速配置
使用appassembler-maven-plugin 打包自定义目录 1.Pom中添加 <plugin> <artifactId>maven-resources-plugin ...
- (转)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 ...
- CentOS中用Nexus搭建maven私服,为Hadoop编译提供本地镜像
系统: CentOS release 6.6 (Final) Nexus:nexus-2.8.1-bundle.tar.gz,下载地址:https://sonatype-download.global ...
- OpenFire后台插件上传获取webshell及免密码登录linux服务器
1.目标获取 (1)fofa.so网站使用搜索body="Openfire, 版本: " && country=JP,可以获取日本存在的Openfire服务器.如图 ...
- SSM项目连接远程Linux服务器的mysql 启动tomcat卡在了 Initializing Spring root WebApplicationContext
网上查了原因, linux下mysql访问速度缓慢并且ssh连接缓慢的原因 解决办法: 1.linux ssh连接慢 最近发现ssh连接的时候却很慢,ping的速度非常好,让人误以为是ssh连接不上. ...
随机推荐
- ASP.NET MVC和ASP.NET Core MVC中获取当前URL/Controller/Action (转载)
ASP.NET MVC 一.获取URL(ASP.NET通用): [1]获取完整url(协议名+域名+虚拟目录名+文件名+参数) string url=Request.Url.ToString(); [ ...
- c# create html table test
string html = "<html><head><title>44444444</title>"; html += @&quo ...
- [Oracle][Corruption]发生ORA00600[kdsgrp1]的时候,如何进行调查
本质上,这很可能是坏块引发的,所以需要调查 关联的Table 中的坏块状况: Excerpt of trace file============================*** 2017-08- ...
- [Spark][Python]PageRank 程序
PageRank 程序: file contents: page1 page3page2 page1page4 page1page3 page1page4 page2page3 page4 def c ...
- [linux]查询多个 trace 文件中,包含特定内容的文件
例如 目录是 /home/oracle/abc/trace 命令如下:oracle@node1 trace]$ find ./ -name "*.trc" | xargs grep ...
- Asp.Net MVC 获取当前 Controller Action Area
获取控制器名称: ViewContext.RouteData.Values["controller"].ToString(); 获取Action名称: ViewContext.Ro ...
- Docker系列学习
一.Docker入门 1.Docker概述与安装 2.Docker镜像管理 3.Docker容器管理 4.Docker数据管理 5.Docker网络配置 6.Docker图形化管理 7.Docker监 ...
- Linux下针对服务器网卡流量和磁盘的监控脚本
1)实时监控网卡流量的通用脚本: [root@ceph-node1 ~]# cat /root/net_monit.sh #!/bin/bash PATH=/bin:/usr/bin:/sbin:/u ...
- git-两小时简单使用教程
两小时学会Git玩转Github 1. 了解Git和Github 1.1什么是Git Git是一个免费.开源的版本控制软件 1.2什么是版本控制系统 版本控制是一种记录一个或若干个文件内容变化,以便将 ...
- 百度之星-1002-list应用
用stl的list即可,注意...代码的简洁性(被debug伤痛)注意合并时可以手动pop,或者用splice进行合并,不能用merge!!!merge合并是自带排序!!! #include<b ...