idea使用docker-maven-plugin插件将项目编译为docker镜像到远程linux服务器

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

       在使用idea开发时,直接docker-maven-plugin插件,把项目编译成docker镜像,然后通过docker:push推送到linux服务器,非常简单,快捷,也避免了手动打包,然后拷贝war包到tomcat的麻烦了。以下是流程:

1、先配置docker-maven-plugin插件

idea使用docker-maven-plugin插件将项目编译为docker镜像到远程linux服务器_第1张图片

在pom文件中加入docker-maven-plugin插件相关配置

idea使用docker-maven-plugin插件将项目编译为docker镜像到远程linux服务器_第2张图片

绑定docker命令到maven各阶段

idea使用docker-maven-plugin插件将项目编译为docker镜像到远程linux服务器_第3张图片

这里需要服务器开启2375端口,后面详细描述

具体代码:


hub.*****.com
****

	com.spotify
	docker-maven-plugin
	0.4.14
	
		my-hub
		http://${docker.repostory}
		
		${docker.repostory}/${docker.registry.name}/${project.artifactId}:${project.version}
		
			${project.version}
			latest
		
		http://192.168.*.*:2375
		daocloud.io/library/java:openjdk-8u40
		["java", "-jar", "/${project.build.finalName}.jar"]
		
			8080
		
		
			
				/
				${project.build.directory}
				${project.build.finalName}.jar
			
		
	
	

2、配置docker-wagon-plugin插件(非本次方式必须,可以安装,是另外一种部署方式,直接通过wagon命令,直接把jar包推到服务器,然后替换)

idea使用docker-maven-plugin插件将项目编译为docker镜像到远程linux服务器_第4张图片

idea使用docker-maven-plugin插件将项目编译为docker镜像到远程linux服务器_第5张图片

idea使用docker-maven-plugin插件将项目编译为docker镜像到远程linux服务器_第6张图片

具体代码:


/work/${project.artifactId}
${project.artifactId}.jar
192.168.*.*:*
root
****

	
		org.apache.maven.wagon
		wagon-ssh
		2.8
	

	org.codehaus.mojo
	wagon-maven-plugin
	1.0
	
		target/${pack-name}
		
		
			
			kill -9 `ps -ef |grep ${project.artifactId}.jar|grep -v "grep" |awk '{print $2}'`
			
			 ${service-path}/renren.log 2>&1 & ]]>
			
			
		
		
		true
	

3、完了后,可以在maven-project看到docker插件和wagon插件

idea使用docker-maven-plugin插件将项目编译为docker镜像到远程linux服务器_第7张图片

idea使用docker-maven-plugin插件将项目编译为docker镜像到远程linux服务器_第8张图片

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 \

idea使用docker-maven-plugin插件将项目编译为docker镜像到远程linux服务器_第9张图片

重新加载docker配置

systemctl daemon-reload // 1,加载docker守护线程
systemctl restart docker // 2,重启docker

5、关闭防火墙

ss -luntp
systemctl status firewalld
systemctl  stop firewalld
systemctl  disable  firewalld

idea使用docker-maven-plugin插件将项目编译为docker镜像到远程linux服务器_第10张图片

如果开放成功,访问2375端口,会看到如下效果:

idea使用docker-maven-plugin插件将项目编译为docker镜像到远程linux服务器_第11张图片

6、安全认证配置

当我们 push 镜像到 Docker 仓库中时,不管是共有还是私有,经常会需要安全认证,登录完成之后才可以进行操作。当然,我们可以通过命令行

docker login -u user_name -p password docker_registry_host 

登录,但是对于自动化流程来说,就不是很方便了。使用 docker-maven-plugin 插件我们可以很容易实现安全认证。
首先在 Maven 的配置文件 setting.xml 中增加相关 server 配置,主要配置 Docker registry用户认证信息。

路径:

idea使用docker-maven-plugin插件将项目编译为docker镜像到远程linux服务器_第12张图片

idea使用docker-maven-plugin插件将项目编译为docker镜像到远程linux服务器_第13张图片

  
	
		my-hub
		**
		***
		
			***@163.com
		
	

 

7、测试、验证

先配置镜像images版本c-0311

idea使用docker-maven-plugin插件将项目编译为docker镜像到远程linux服务器_第14张图片

idea使用docker-maven-plugin插件将项目编译为docker镜像到远程linux服务器_第15张图片

执行完第一步,控制台看到日志,正在构建、打包jar

idea使用docker-maven-plugin插件将项目编译为docker镜像到远程linux服务器_第16张图片

接下来,执行第二步,镜像生成完成,且推到了内网了

idea使用docker-maven-plugin插件将项目编译为docker镜像到远程linux服务器_第17张图片

接下来,去内网看下c-0311版本的镜像已存在,则测试成功了!

050f599864f95df75dece6c0f2ae38e1b35.jpg

 

8、相关报错,以及解决办法:

问题1:

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

问题2:

#内网连不上harbor线上仓库
[root@localhost ~]# docker login hub.***.com
Username: user1
Password: 
Error response from daemon: Get http://hub.***.com/v1/users/: dial tcp: lookup hub.***.com on 222.86.101.63:53: no such host
#甚至连ping都不通时
[root@localhost ~]# ping hub.***.com
ping: hub.***.com: 未知的名称或服务


#解决办法,配置hosts
[root@localhost ~]# vi /etc/hosts

 

9、搭建docker私有镜像仓库Harhor

具体操作详见另外一篇博客:Centos7安装Docker镜像仓库Harbor1.5.3

在域名的服务器上搭建了镜像仓库Harbor后,需要确保以下几个地方都正确:

a、在https://hub.***.com,注册普通账号,然后新建普通账号的项目,用以保存镜像

b、把注册好的harbor账号密码,配置在maven的setting.xml上

c、在idea的pom设定推送的地址为 hub.***.com,与前面配置好的Harbor地址一致

把 docker-maven-plugin 下的  pushImage标签的注释放开

true

需要确保  ${docker.repostory}  的指与线上hub仓库地址一致了

d、需要保证内网以及开发的windows环境能访问的通线上的镜像仓库地址,配置hosts文件

这里贴一个,如果碰上没有权限修改hosts文件的解决办法:

idea使用docker-maven-plugin插件将项目编译为docker镜像到远程linux服务器_第18张图片

idea使用docker-maven-plugin插件将项目编译为docker镜像到远程linux服务器_第19张图片

 

都OK后,会发现  docker:build 命令,控制台会推送成功,也可到线上仓库去检查

idea使用docker-maven-plugin插件将项目编译为docker镜像到远程linux服务器_第20张图片

 

线上环境直接  docker pull 拉去该镜像即可

转载于:https://my.oschina.net/xsh1208/blog/3021035

你可能感兴趣的:(idea使用docker-maven-plugin插件将项目编译为docker镜像到远程linux服务器)