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

随着的微服务架构的流行,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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值