docker部署springboot jar包项目

慈云数据 1年前 (2024-03-15) 技术支持 66 0

docker部署springboot jar包项目

  • 前提,服务器环境是docker环境,如果服务器没有安装docker,可以先安装docker环境。

    各个环境安装docker:

    Ubuntu上安装Docker:

    ubuntu离线安装docker:

    CentOS7离线安装Docker:

    CentOs7在线安装docker:

    docker安装成功后,执行docker ps命令

    一、编译springboot项目生成jar包

    • 将项目jar包上传到服务器安装目录
    • 如果使用idea开发工具,直接点击右侧Maven,clean,install生成jar包

      在这里插入图片描述

    • install编译完成后会在target下生成一个jar包

      在这里插入图片描述

    • 将这个jar包上传到服务器的安装目录

      二、创建安装目录

      • /opt/projects/demo-java/target/
        cd /opt
        mkdir projects
        cd projects
        # 创建项目目录和日志目录
        mkdir demo-java log
        cd demo-java
        mkdir target
        cd /opt/projects/log
        mkdir java
        
        • 将jar包上传到/opt/projects/demo-java/target/目录下

          在这里插入图片描述

        • 项目中配置的日志目录是/opt/project/log,构建成容器后日志目录也是这个
        • 日志配置文件logback-spring.xml

          在这里插入图片描述

          三、创建Dockerfile

          # 基于哪个镜像
          FROM OpenJDK:8-jdk
          # 将本地文件夹挂载到当前容器
          VOLUME /tmp
          # 拷贝文件到容器,ocr-compare-demo-java.jar这里是maven打包后的名字
          # target,必须与服务器上创建的目录保持一致
          ADD target/ocr-compare-demo-java.jar app.jar
          #时区设置
          RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
          RUN sh -c 'touch /app.jar'
          ENV JAVA_OPTS="-server  -Xmx512m -Xms128m -Xmn256m -XX:MetaspaceSize=64m"
          # 配置容器启动后执行的命令
          ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
          
          • 将Dockerfile放在/opt/projects/demo-java目录下,与target同级

            在这里插入图片描述

          • FROM openjdk:8-jdk # 基于openjdk这个镜像来构建,服务器如果没有这个镜像,默认会先拉去这个镜像
          • 查看镜像docker images

            在这里插入图片描述

            四、创建启动文件

            • build-demo-java.sh
              #!/bin/bash
              echo "-----clear container and image start-----"
              # 命名容器名称
              rep=demo-java
              # 如果此容器存在则停止
              if docker ps | grep "$rep";then
                      docker stop $rep
              fi
              # 如果此容器存在则删除
              if docker ps -a | grep "$rep";then
                      docker rm $rep
              fi
              # 如果此镜像存在则删除
              if docker images | grep "$rep";then
                      docker rmi $rep
              fi
              echo "----clear container and image end----"
              # 构建镜像
              echo "------build docker image start------"
              docker build -t $rep /opt/projects/demo-java || ! echo "build new image error" || exit
              echo "------build docker image end-------"
              echo "----build container start-----"
              # 启动容器
              docker run -d -p 7070:7070 \
              -v /opt/projects/log/java:/opt/project/log \
              --restart=always --privileged=true \
              -e TZ=Asia/Shanghai \
              --name $rep $rep || ! echo "cannot run container:$rep,exit" || exit
              echo "-----build container end-----"
              # -p 7070:7070 [宿主机映射端口]:[容器端口-jar包项目中配置的端口]
              # -v /opt/projects/log/java:/opt/project/log  -v配置容器目录映射到宿主机,[宿主机目录]:[容器目录]
              # -e TZ=Asia/Shanghai 给容器设置时区
              # --name $rep $rep  容器名称、镜像名称,镜像名称不带版本号时默认latest版本
              

              五、执行启动文件

              cd  /opt/projects/
              sh sh build-demo-java.sh 
              

              在这里插入图片描述

              在这里插入图片描述

              • 查看镜像docker images

                在这里插入图片描述

                六、查看部署的容器

                # 查看容器
                docker ps
                # 查看看那日志
                docker logs -f --tail 500 demo-java
                

                在这里插入图片描述

                • 查看日志 docker logs -f --tail 500 demo-java

                  在这里插入图片描述

                • 启动成功
微信扫一扫加客服

微信扫一扫加客服