Docker部署应用

技术需求点
1.以Jar包方式部署SpringBoot应用;
2.以War包方式部署SpringBoot应用;

一.打包SpringBoot项目

将开发好的springboot程序打成jar包或war包,我这里用的maven工具打包的,打好的包上传到linux机器目录中,打包方式可自行搜索,不赘述。

二.定义Dockerfile文件,用于创建镜像

自定义Docker镜像详细的方法请参考我的这篇文章:自定义Docker镜像并推送到阿里云仓库

定义Jar包应用的Dockfile文件

#java运行程序,因此from java
FROM java
MAINTAINER leo
#将springboot-web-1.0.0.jar传到容器的/opt目录下
ADD springboot-web-1.0.0.jar /opt
#赋予springboot-web-1.0.0.jar可执行权限
RUN chmod +x /opt/springboot-web-1.0.0.jar
#启动容器时运行该程序
CMD java -jar /opt/springboot-web-1.0.0.jar

定义War包应用的Dockfile文件

#从官方tomcat镜像继承
FROM tomcat
MAINTAINER leo
RUN mv /usr/local/tomcat/webapps webapps1
RUN mv /usr/local/tomcat/webapps.dist webapps
#将springboot-web-1.0.0.war传到容器的/usr/local/tomcat/webapps目录下
ADD springboot-web-1.0.0.war /usr/local/tomcat/webapps
EXPOSE 8080
#启动容器时运行该程序
CMD /usr/local/tomcat/bin/catalina.sh run

jar包构建的不用解释,因为使用springboot内部的tomcat启动的,只需要依赖JDK环境;

war包的依赖于外部的tomcat镜像,提前从官方"docker pull tomcat"拉下来tomcat镜像,但是从官方下载的tomcat镜像的webapps文件夹很奇怪,按理说这个文件夹是各种根目录的文件,但是这里却是空的,反而多了webapps.dist文件夹,需要的根目录文件在这个文件夹里,因此把空的命名成webapps1,要用的webapps.dist重命名成webapps。

三.构建和运行镜像

构建镜像:

#jar包,镜像名称:leo-springboot-jar
docker build -t leo-springboot-jar .
#war包,镜像名称:leo-springboot-war
docker build -t leo-springboot-war .

tips:运行镜像之前,如果你的springboot项目依赖mysql、redis等环境,先将依赖的环境启动准备好。

运行镜像:

#jar包
docker run -d -p 8080:8080 leo-springboot-jar
#war包
docker run -d -p 8080:8080 leo-springboot-war

四.验证

jar访问时输入:http://192.168.33.100:8080/user,
在这里插入图片描述
war包访问时输入:http://192.168.33.100:8080/springboot-web-1.0.0/user,war包需要解压,解压后的文件是springboot-web-1.0.0,所以访问链接中需要加上文件名。
在这里插入图片描述

五.部署过程Tips

1.从官方镜像拉下来的tomcat镜像的webapps文件夹为空问题,注意使用webapps.dist里面的内容,将webapps.dist命名为webapps!

2.端口问题:用jar包部署的方式,容器监听端口就是jar包中配置文件中的端口,而用war包部署的方式由于依赖外部的tomcat,必须修改tomcat的配置文件/tomcat/comf/servlet.xml才行,

3.我部署的方式与 Docker 部署war包项目 这篇文章部署的方式原理相同,都是将项目代码拷入到tomcat镜像的webapps文件中去运行,但是我这种部署方式好处是:通过将项目代码单独构建出镜像的方式,避免了重启容器之后springboot项目代码丢失的问题。当然,通过挂载共享文件夹的方式也可以实现,详情请参考 Docker 部署war包项目

更多文章,欢迎访问我的简书主页:
https://www.jianshu.com/u/39a0b063a143

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值