Docker部署Springboot项目

docker部署springboot项目

打包jar包

  • 找到idea的springboot项目

  • 在pom.xml中配置如下依赖

    <!-- Docker maven plugin -->
    <plugin>
        <groupId>com.spotify</groupId>
        <artifactId>docker-maven-plugin</artifactId>
        <version>1.0.0</version>
        <configuration>
            <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
            <dockerDirectory>src/main/docker</dockerDirectory>
            <resources>
                <resource>
                    <targetPath>/</targetPath>
                    <directory>${project.build.directory}</directory>
                    <include>${project.build.finalName}.jar</include>
                </resource>
            </resources>
        </configuration>
    </plugin>
    
    <plugin><!--编译跳过测试文件检查的生命周期-->
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
            <skip>true</skip>
        </configuration>
    </plugin>
    
          <java.version>11</java.version>
            <docker.image.prefix>springboot</docker.image.prefix>
        </properties>
    
  • 配置application.yml

    server:
      port: 8000
    
    
    spring:
      datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://服务器ip:3306/sugwch?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
        username: root
        password: xxxx
    
    token:
        sign: 签名
        time: 60*60*24*7
    
    mybatis:
       mapper-locations: classpath:/mapper/*.xml
    #MyBatis使用pageHelper分页
    pagehelper:
      helper-dialect: mysql
      reasonable: true
      support-methods-arguments: true
    
  • 使用maven打包
    在这里插入图片描述

    • 点击clean后执行

在这里插入图片描述

  • 点击package后执行

在这里插入图片描述

  • 执行完成后显示如下界面,左侧自动生成jar包

在这里插入图片描述

在这里插入图片描述

  • 至此jar包打包完成

配置要创建的镜像

  • 部署之前看一下自己的项目的jdk版本
    在这里插入图片描述

在这里插入图片描述

  • 登录Linux服务器

  • root目录下新建一个文件夹叫springboot-login,cd到该目录下,把刚才打包好的jar包传递到该目录下

  • 同样在该目录下下载项目中对应的jdk版本,我这里是jdk15.0.1

    wget https://download.java.net/java/GA/jdk15.0.1/51f4f36ad4ef43e39d0dfdbaf6549e32/9/GPL/openjdk-15.0.1_linux-x64_bin.tar.gz
    
    
  • 还是在springboot-login目录下新建Dockerfile文件,里面内容如下

    #1.指定基础镜像,并且必须是第一条指令
    FROM centos:7
    
    #3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录
    WORKDIR /usr/local/java
    #4.一个复制命令,把jdk安装文件复制到镜像中,语法:ADD <src>... <dest>,注意:jdk*.tar.gz使用的是相对路径
    ADD openjdk-15.0.1_linux-x64_bin.tar.gz /usr/local/java/
    
    #6.配置环境变量
    ENV JAVA_HOME=/usr/local/java/jdk-15.0.1
    ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    ENV PATH=$JAVA_HOME/bin:$PATH
    
    #7. VOLUME 指定了临时文件目录为/tmp
    # 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
    VOLUME /tmp 
    
    #8.将jar包添加到容器中并更名为app.jar
    ADD demo-0.0.1-SNAPSHOT.jar /app.jar
    
    EXPOSE 8000
    
    
    #容器启动时需要执行的命令 这步不写也行  
    #CMD ["java","-version"]
    
    # 运行jar包
    RUN bash -c 'touch /app.jar'
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
    
    
  • 最终springboot-login文件目录

在这里插入图片描述

创建镜像并运行

  • 假设你的Linux服务器以及由docker环境

  • 在springboot-login目录下执行

    docker build -t springboot-login .
    

在这里插入图片描述

  • 此时构建成功镜像,docker运行镜像即可

    # 查看镜像id
    docker images
    # 后台运行springboot项目 -d表示后台运行
    # -i表示即使没有连接,也要保持标准输入保持打开状态,一般与 -t 连用。
    # -p8000:8000 表示在容器里运行在8000端口的服务映射到主机8000端口上,第一个8000是容器里的,这里记得服务器的安全组加入8000端口开放
    docker run -d -it  -p8000:8000 springboot-login
    # 查看是否允许起来
    docker ps
    
  • 如果docker没有运行成功,可以先前台运行

    docker ps -a #查看是否容器自动关闭,一般是因为springboot内部错误或者java环境有错误
    # 可以直接在前台运行查看
    docker run -p8000:8000 springboot-login
    
    • 如果前台运行成功,关闭前台(重新启动一个窗口docker stop 容器id即可关闭)

    • 前台没有运行成功因为jdk版本问题一般会报错,如果报错请重新检测jdk版本

      Exception in thread "main" java.lang.UnsupportedClassVersionError: com/hanzoy/sugwch/DemoApplication has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
      
      
  • 如果还没有运行成功也可以先在服务器上配置该jdk环境然后在服务器上运行jar包

    • 环境配置如下

    • 访问 https://jdk.java.net/15/ 复制下载链接
      在这里插入图片描述

      # 到服务器上用wget下载
      wget https://download.java.net/java/GA/jdk15.0.1/51f4f36ad4ef43e39d0dfdbaf6549e32/9/GPL/openjdk-15.0.1_linux-x64_bin.tar.gz
      #解压
      tar xvfz openjdk-15.0.1_linux-x64_bin.tar.gz
      #放到opt目录下
       mv jdk-15.0.1 /opt/jdk-15.0.1
      
      # 设置环境变量
      vim /etc/profile
      i
      # 在文件的末尾添加
      JAVA_HOME=/opt/jdk-15.0.1
      PATH=$PATH:$JAVA_HOME/bin
      export JAVA_HOME PATH
      Esc
      :wq
      # 手动黏贴到命令行里执行一下
      JAVA_HOME=/opt/jdk-15.0.1
      PATH=$PATH:$JAVA_HOME/bin
      export JAVA_HOME PATH
      #测试
      java -version
      # 如下即成功:
      openjdk version "15.0.1" 2020-10-20
      OpenJDK Runtime Environment (build 15.0.1+9-18)
      OpenJDK 64-Bit Server VM (build 15.0.1+9-18, mixed mode, sharing)
      
    • root下新建文件夹叫javaPro,上传jar包到此目录下运行命令

      java -jar demo-0.0.1-SNAPSHOT.jar#java -jar 包名
      
    • 由于这里运行成功docker那没有运行成功,所以是docker的jdk环境有错误

在这里插入图片描述

  • 运行成功关闭服务

  • 查找端口的进程号(pid)lsof -i:8000

  • 杀死即可结束springboot项目的运行sudo kill -9 pid

  • 如果docker运行成功使用postman测试接口即可

停止服务删除镜像

# 查看容器id
docker ps
# 停止容器
docker stop 容器id
# 删除容器前查看所有容器
docker ps -a
# 删除容器
docker rm 容器id
# 查看镜像
docker images
# 删除镜像
docker rmi 镜像id

docker自定义jdk15.0.1镜像

# 创建一个文件,cd到该文件下载jdk
wget https://download.java.net/java/GA/jdk15.0.1/51f4f36ad4ef43e39d0dfdbaf6549e32/9/GPL/openjdk-15.0.1_linux-x64_bin.tar.gz

该目录下编写Dockerfile

在这里插入图片描述

#1.指定基础镜像,并且必须是第一条指令
FROM centos:7

#3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录
WORKDIR /usr/local/java
#4.一个复制命令,把jdk安装文件复制到镜像中,语法:ADD <src>... <dest>,注意:jdk*.tar.gz使用的是相对路径
ADD openjdk-15.0.1_linux-x64_bin.tar.gz /usr/local/java/

#6.配置环境变量
ENV JAVA_HOME=/usr/local/java/jdk-15.0.1
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH


#容器启动时需要执行的命令
#CMD ["java","-version"]

  • 接着打包成镜像
  • 运行容器 docker run -d 容器名 -it 容器id /bin/bash
  • 进入容器docker exec -it 容器id /bin/bash
  • 运行成功测试java -versionjavajavac
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值