将后端(SpringBoot)项目使用docker部署在云服务器中

文章目录[x]
  1. 0.1:  有修改时重新部署后端
  2. 0.2:  前端运行命令

  1. 首先找一个你熟悉的目录下创建一个目录upload(这个目录可以随便),并把java的jar包上传进去

    # 创建一个目录,然后所有的操作都是在这个目录中进行的。
    # 这里目录的名字可以随便起
    mkdir classmate 
      然后上传jdk和项目jar包
    1. 新建或上传Dockerfile

    Dockerfile

    # 基础镜像
    FROM centos:centos7.9.2009 # 这里是
    # 配置环境变量和jdk的安装目录
    ENV JAVA_DIR=/usr/local
    # 安装jdk
    # \ 就是换到下一行输入,对实际命令没有任何影响,只是为了方便观看
    RUN cd $JAVA_DIR \ 
            # 使用tar命令将当前目录下(这里因为上面配置了所以所在的目录也就是 /usr/local/下面)的jdk文件进行解压
            && tar -xvf ./jdk-8u321-linux-x64.tar.gz \
            # 然后修改解压后的文件名为java8 ,此时就是 /usr/local/java8
            # 这里需要注意的是下面的 jdk1.8.0_321,他就是解压后的文件名
            # 如果这里你不清楚解压后的文件是什么,则可以先解压看以下文件名是什么,然后在进行书写这里的名称
            && mv ./jdk1.8.0_321 ./java8 
            
    # 配置JAVA的环境变量
    ENV JAVA_HOME=$JAVA_DIR/java8
    # 配置到PAHT中
    ENV PATH=$PATH:$JAVA_HOME/bin
    # 暴露端口 5566 --!!!容器内部端口
    EXPOSE 5566
    
    # 入口,jar文件的启动命令 # 这里app.jar就是我的jar文件
    ENTRYPOINT ['java','-jar','/tmp/app.jar']
    

      我的

    # 基础镜像
    # Docker image for springboot file run
    # VERSION 0.0.1
    # Author:
    # 基础镜像使用java
    FROM openjdk:8-jre-slim
    
    # author
    MAINTAINER muluo
    
    # 挂载目录
    # VOLUME 指定了临时文件目录为/home/smartcollege。
    
    # 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/home/smartcollege
    VOLUME /home/smartcollege
    
    # 创建目录
    RUN mkdir -p /home/smartcollege
    
    # 指定路径
    WORKDIR /home/smartcollege
    # 复制jar文件到路径
    COPY ./jar/classmate-info-server.jar /home/smartcollege/classmate-info-server.jar
    
    # 启动网关服务
    ENTRYPOINT ["sh","-c","exec java $JAVA_OPTS -jar classmate-info-server.jar"]
      部署其他项目时只需修改classmate-info-server.jar相关的名称
    1. 以上命令配置完成后,即可输入命令进行build,然后回车

      # classmate-jar:1.0 就是名称:TAG
      # . 这个.意思就是找到当前目录下的Dockerfile文件进行build,然后回车
      docker build -t classmate-jar:1.0 .

        当你看到最下面的三行,就是创建成功

      Successfully built dcb5dd17bc4d # 成功创建, IMAGES ID 
      Successfully tagged classmate-jar:1.0 # 成功 REPOSITORY:TAG      
        然后输入docker images 查看 是否创建成功

        启动该容器

      # 启动该容器使用docker run 命令,回车
      # --name 给container起一个名字
      # -d 后台运行
      # -p 指定端口映射到主机端口,主机端口:容器端口 ,这里需要注意的是如果防护墙位关闭则主机端口必须开启,这里我已经开启了5566端口,所以可以通过同一个局域网下访问该端口
      # classmate-jar:1.0 镜像名和TAG
      docker run --name classmate-jar -d -p 8081:8081 classmate-jar:1.0
      # 通过docker ps 查看容器运行状况
      # SATATUS 状态
      # PORTS 端口映射
      # NAMS 名字
      # 等
      
      
      # 加入网关启动
      docker run -d -p 8081:8081 --name classmate-jar --network classmate-jar classmate-jar:latest
      可能使用到的命令:
      docker run -itd -p 8081:8081 --network classmate-jar --name classmate-jar classmate-jar:latest
      docker inspect classmate-jar 用于获取关于名为 classmate-info 的 Docker 容器或镜像的详细信息。
      docker logs -f classmate-jar 查看classmate-jar后端项目的日志信息
      docker rm -f classmate-jar 强制删除
      docker ps
      docker images
      Vim 相关

      有修改时重新部署后端

    #先cd到jar文件夹所在的目录
    docker cp ./jar/classmate-info-server.jar classmate-jar:/home/smartcollege
    docker restart classmate-jar

      前端运行命令

    docker run -itd \
    --name nginx-classmate \
    -v /mydata/yuanqu-classmate/nginx/ssl:/home/qd/projects/qd-ui/ssl \
    -v /mydata/yuanqu-classmate/nginx/html:/home/qd/projects/qd-ui \
    -v /mydata/yuanqu-classmate/nginx/logs:/var/log/nginx \
    -v /mydata/yuanqu-classmate/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
    -v /etc/localtime:/etc/localtime \
    -p 8077:443 \
    --network classmate-jar \
    nginx:1.22.0
      这个 docker run 命令用于启动一个新的 Docker 容器,并且带有多个参数来配置容器的行为。
    • docker run: Docker 的基本命令,用于启动一个新的容器。
    • -i: 保持 STDIN(标准输入)打开,即使没有附加。
    • -t: 分配一个伪终端或终端。
    • -d: 在后台运行容器,并打印容器 ID。
    • --name: 为容器指定一个名称,这里是 nginx-classmate
    • -v--volume: 用于挂载卷,即将宿主机上的目录或文件挂载到容器内。
    • 第一个 -v 将宿主机上的 /mydata/yuanqu-classmate/nginx/ssl 目录挂载到容器内的 /home/qd/projects/qd-ui/ssl 目录。
    • 以此类推,其他 -v 选项也是将宿主机上的不同目录或文件挂载到容器内的相应位置。
    • /etc/localtime:/etc/localtime 这条挂载命令通常用于同步容器和宿主机的时区设置。
    • -p--publish: 用于端口映射,将容器内的端口映射到宿主机上的端口。
    • 这里,容器内的 443 端口被映射到宿主机上的 8077 端口。
    • --network: 指定容器要使用的网络。
    • 这里,容器将连接到名为 classmate-jar 的网络。
    • nginx:1.22.0: 指定要运行的 Docker 镜像和标签。
    • 这里,将运行 nginx 镜像的 1.22.0 版本。
      综合解释
      综合以上各点,这个 docker run 命令的作用是:
    1. 在后台启动一个名为 nginx-classmate 的容器。
    2. 挂载多个宿主机的目录或文件到容器内的相应位置。
    3. 将容器内的 443 端口映射到宿主机的 8077 端口。
    4. 将容器连接到 classmate-jar 网络。
    5. 使用 nginx 镜像的 1.22.0 版本作为容器的运行基础。
      这个容器配置非常适合用于运行一个 Nginx web 服务器,并将相关的配置文件、日志文件、SSL 证书和网站内容存储在宿主机上,以便于管理和备份。同时,通过端口映射,你可以通过访问宿主机的 8077 端口来访问容器内的 Nginx 服务。
点赞
隐藏
变装