由于普通部署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