本次将采用docker compose快速编排部署RuoYi前后端分离开源项目。
Linux环境(本文采用Centos7)
Docker安装官方文档:https://docs.docker.com/engine/install/centos/
yum update
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
yum install -y yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
systemctl enable docker
systemctl start docker
使用默认的仓库地址下载速度比较慢,容易连接超时下载失败,我们可以在/etc/docker目录下加入daemon.json文件
然后执行systemctl restart docker重启Docker服务
{
"registry-mirrors": ["https://8kppz1zc.mirror.aliyuncs.com"]
}
docker run hello-world
在/root/ruoyi目录下创建Dockerfile文件,Dockerfile文件内容如下
FROM java:8
EXPOSE 8080
ADD ruoyi-admin.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java", "-Duser.timezone=GMT+8", "-Xms800m", "-Xmx800m", "-jar", "/app.jar", "--spring.profiles.active=druid"]
在/root/ruoyi目录下创建docker-compose.yml文件,docker-compose.yml文件内容如下
文件内容中涉及到的目录请事先创建好“/root/nginx/admin”,“/root/mysql/conf”,“/root/mysql/data”
version: "3.9"
services:
nginx: # 服务器名称,用户自定义
image: nginx:latest # 镜像版本
restart: always
ports:
- 80:80 # 暴露端口
volumes: # 挂载
- /root/nginx/admin:/usr/share/nginx/admin
- /root/nginx/nginx.conf:/etc/nginx/nginx.conf
privileged: true # 这个必须要,解决nginx的文件调用的权限问题
links:
- ruoyi
mysql:
image: mysql:5.7.27
restart: always # 重启策略
ports:
- 3306:3306
volumes:
- /root/mysql/conf:/etc/mysql/conf.d # 挂载配置文件
- /root/mysql/data:/var/lib/mysql # 挂载数据
command: [ #执行多条指令
'mysqld',
'--innodb-buffer-pool-size=20M',
'--character-set-server=utf8',
'--collation-server=utf8_general_ci',
'--default-time-zone=+8:00',
'--lower-case-table-names=1'
]
environment: # 指定用户root的密码、
- MYSQL_ROOT_PASSWORD=123456
redis:
image: redis:latest
ruoyi:
image: ruoyi-admin:latest
build: . # 表示以当前目录下的Dockerfile开始构建镜像
volumes:
- /root/ruoyi/logs:/home/ruoyi/logs
- /root/ruoyi/uploadPath:/home/ruoyi/uploadPath
depends_on: # 依赖
- mysql
- redis
在/root/nginx/目录下创建nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
root /usr/share/nginx/admin;
location / {
try_files $uri $uri/ /index.html;
index index.html index.htm;
add_header Cache-Control no-cache;
}
location /prod-api/{
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://ruoyi:8080/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
注意:ruoyi项目的数据地址默认为启用SSL,请将数据库连接参数中的useSSL改为false
至此相关配置都已经完成,接下来就是将前端项目和后端项目分别编译打包后上传至对应目录
前端项目上传至/root/nginx/admin
后端项目编译成ruoyi-admin.jar上传至/root/ruoyi
一切准备就绪后进入/root/ruoyi目录下执行docker compose up -d
如果想查看执行过程中的错误,可以先将-d参数去掉
cd /root/ruoyi
docker compose up -d
查看ruoyi项目启动日志
docker ps # 先查看容器名称
docker logs -f [容器名称]