由于普通部署jar包的方式较为繁琐,我们使用docker则相对较为简单,例如有多个jar包需要启动,则需要逐个启动,或者使用一个脚本启动,而启动后如果机器断电则无法保证服务能立即启动,当然也可以将需要启动的服务加入自启动,但是如果对于多台服务器都要部署同样的服务则较为繁琐,可能需要安装各种依赖导致部署时间过长,而使用docker则可以在各个机器拉取镜像即可启动,无需额外安装软件。

1、制作镜像部署jar包

通常更推荐这种方式来部署,因为如果新构建的镜像如果跑不动则可以立即切换到上一个版本的镜像,但是每次改动代码都要重新构建一个新的镜像。

1.1新建Dockerfile

touch Dockerfile

1.2编辑Dockerfile内容

这里以ruoyi服务举个例子

FROM openjdk:8-jdk-alpine
MAINTAINER ruoyi
ADD ruoyi-modules-system.jar /app/system.jar
EXPOSE 9201
ENTRYPOINT ["java","-jar","/app/system.jar"]

FROM:以什么镜像为基础镜像

MAINTAINER:作者

ADD:将什么文件复制到容器内部

EXPOSE:镜像所需端口

ENTRYPOINT:运行容器后执行的命令

1.3构建镜像

docker build -t ruoyi-system:1.0 .

ruoyi-system:镜像名称

1.0:镜像版本号

1.4运行容器

docker run --restart=always -d -it --name=ruoyi-system -p 9201:9201 ruoyi-system:1.0

2、不构建镜像直接运行jar包

这种方式的好处就是不需要每次都构建镜像,只需要将jar包上传到服务器重启指定的服务即可,但是无法像构建镜像那样有问题马上回滚到上一个版本。所以生产环境使用第一种方式

2.1拉取基础镜像

docker pull openjdk:8-jdk-alpine

2.2创建docker-compose

touch docker-compose.yml

2.3编辑docker-compose内容

version: '3'
services:
  ruoyi-system:
    image: openjdk:8-jdk-alpine
    container_name: ruoyi-system
    restart: always
    volumes:
      - /root/ruoyi/ruoyi-modules-system.jar:/usr/local/data/ruoyi-modules-system.jar
    command: java -jar /usr/local/data/ruoyi-modules-system.jar
    environment:
      TZ: Asia/Shanghai        # 指定时区
    ports:
      - "9201:9201"
  ruoyi-gateway:
    image: openjdk:8-jdk-alpine
    container_name: ruoyi-gateway
    restart: always
    environment:
      TZ: Asia/Shanghai        # 指定时区
    volumes:
      - /root/ruoyi/ruoyi-gateway.jar:/usr/local/data/ruoyi-gateway.jar
    command: java -jar /usr/local/data/ruoyi-gateway.jar
    depends_on:
      - ruoyi-system
    ports:
      - "9080:9080"
  ruoyi-auth:
    image: openjdk:8-jdk-alpine
    container_name: ruoyi-auth
    restart: always
    environment:
      TZ: Asia/Shanghai        # 指定时区
    volumes:
      - /root/ruoyi/ruoyi-auth.jar:/usr/local/data/ruoyi-auth.jar
    command: java -jar /usr/local/data/ruoyi-auth.jar
    depends_on:
      - ruoyi-system
    ports:
      - "9200:9200"
  ruoyi-job:
    image: openjdk:8-jdk-alpine
    container_name: ruoyi-job
    restart: always
    environment:
      TZ: Asia/Shanghai        # 指定时区
    volumes:
      - /root/ruoyi/ruoyi-modules-job.jar:/usr/local/data/ruoyi-modules-job.jar
    command: java -jar /usr/local/data/ruoyi-modules-job.jar
    depends_on:
      - ruoyi-system
    ports:
      - "9203:9203"

切记,以容器运行jar必须指定时区,否则程序默认获取到的时间是美国时间

2.4运行容器

docker-compose up -d