美文网首页
Docker部署应用

Docker部署应用

作者: superxcp | 来源:发表于2020-02-17 20:49 被阅读0次

    技术需求点:
    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

    image.png

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

    image.png

    五.部署过程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包项目

    相关文章

      网友评论

          本文标题:Docker部署应用

          本文链接:https://www.haomeiwen.com/subject/znemfhtx.html