docker实战之使用Maven插件构建并运行SpringBoot项目镜像

xiaoxiao2021-02-28  7

随着的微服务架构的流行,spring推出springboot框架作为回应,而部署一个个微服务,我们就不能再使用传统的在linux上部署,而是转移到docker上. 本次介绍最简单高效的方式,使用Maven插件,我使用的是阿里云的CentOS7 首先在pom.xml文件中添加如下的插件

<!-- docker maven打包插件;可以将应用做成docker镜像 --> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.12</version> <configuration> <dockerCertPath>docker</dockerCertPath> <!-- 注意imageName一定要是符合正则[a-z0-9-_.]的,否则构建不会成功 --> <!-- 详见:https://github.com/spotify/docker-maven-plugin Invalid repository name ... only [a-z0-9-_.] are allowed--> <imageName>spring-boot-demo</imageName> <baseImage>java</baseImage> <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin>

并添加端口号远程的端口,因为不设置默认为本机的

<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <dockerHost>http://xxx.xxx.xxx.xxx:2375</dockerHost> </properties>

由于远程的docker默认端口是没有打开的 配置端口号2375 使用

vi /usr/lib/systemd/system/docker.service

进入docker.service文件 添加如下的内容

-H unix:///var/run/docker.sock -H 0.0.0.0:2375 \

使用 netstat -an |grep 2375 可以查看2375端口号是否打开

在window本机配置环境变量

DOCKER_HOST tcp://xxx.xxx.xxx.xxx:2375

由于我使用的是阿里云CemtOS7 服务器 还需要设置一下安全组中开启2375端口

这里有个坑,我以为把防火墙关了,就可以了,其实不然,这时候反而需要开启防火墙 运行如下脚本开启2375端口号

firewall-cmd --zone=public --add-port=2375/tcp --permanent

重启防火墙: firewall-cmd --reload 或者service firewalld restart 我觉得把防火墙开了上传一下镜像再关闭也行,不然就连接不上mysql,redis等,这时候又要开启很多端口

最好再使用window的 telnet命令 telnet xxx.xxx.xxx.xxx 2375测试一下 注意window默认不开启telnet命令的,需要开启,大家可以百度一下就会了,这不是重点

以上一切顺利的话

再按顺序执行maven命令

1 clean 2.package 3.docker:build

即可

倘若成功,使用docker images 可以查看到上传的镜像

spring-boot-demo latest be50b1f2d950 40 minutes ago 658 MB

再使用

docker run -itd --name damo01 -p 9091:9090 be50b1f2d950

我的springboot项目设置端口为9090 使用9091映射

这里如果端口映射网络出了问题,再运行一下下面的命令即可

pkill docker #终止进程 iptables -t nat -F #清空nat表的所有链 ifconfig docker0 down #停止docker默认网桥 systemctl restart docker #重启docker

接着,访问项目Restful接口

xxx.xxx.xxx.xxx9091/test

这时终于成功了,不容易,所有的坑我都踩了一遍,按照我上面的说的做,基本不会有差错

转载请注明原文地址: https://www.6miu.com/read-1900237.html

最新回复(0)