若依(RuoYi)单体版Docker化部署需准备四类资源:前端dist打包产物、后端ruoyi-admin.jar、数据库初始化脚本(quartz.sql、ry_xxx.sql)、基础运行环境(npm、Java、MySQL、Redis);整体采用docker-compose编排,目录规划为/docker-compose,下设java(后端)、nginx(前端+代理)、mysql(数据库+初始化脚本)、redis(缓存)四个子目录,提前创建对应路径并赋予权限(如chmod 777 -R /docker-compose/mysql)。
一、部署前置准备
目录与权限初始化
bash
bash
mkdir -p /docker-compose/java/logs
mkdir -p /docker-compose/nginx/html
mkdir -p /docker-compose/mysql/logs
mkdir -p /docker-compose/redis/logs
chmod 777 -R /docker-compose/mysql
资源上传
将前端dist包、nginx.conf、后端ruoyi-admin.jar、数据库脚本(quartz.sql、ry_20250522.sql)分别上传至对应目录。
二、各服务配置与命令
1. MySQL数据库
初始化脚本init.sql内容:
sql
sql
CREATE USER IF NOT EXISTS 'root'@'%' IDENTIFIED BY 'root';
GRANT ALL PRIVILEGES ON `ry-vue`.* TO 'root'@'%';
FLUSH PRIVILEGES;
docker-compose.yml片段:
yaml
yaml
mysql:
image: mysql:5.7
container_name: mysql.server
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=ry-vue
command:
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--log-error=/var/log/mysql/error.log
volumes:
- /docker-compose/mysql/mysql-data4:/var/lib/mysql
- /docker-compose/mysql:/docker-entrypoint-initdb.d
- /docker-compose/mysql/logs:/var/log/mysql
2. 后端Java服务
Dockerfile内容:
dockerfile
dockerfile
FROM centos:7
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
RUN yum clean all && yum makecache
RUN yum -y install java-1.8.0
WORKDIR /opt
COPY ./ruoyi-admin.jar /opt
CMD ["java", "-jar", "ruoyi-admin.jar"]
自定义配置文件挂载(可选,覆盖jar包内配置):
cat > /docker-compose/java/application.yml << 'EOF'
server:
port: 8080
spring:
datasource:
druid:
url: jdbc:mysql://mysql:3306/ry-vue?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
username: root
password: root
redis:
host: redis
port: 6379
password:
EOF
3. Nginx前端服务
docker-compose.yml片段:
ruoyi-web:
image: nginx:1.25.3
container_name: ruoyi-web
ports:
- 8888:80
volumes:
- /docker-compose/nginx/html:/usr/share/nginx/html/
- /docker-compose/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
- /docker-compose/nginx/logs:/var/log/nginx
depends_on:
- java
4. Redis缓存服务
docker-compose.yml片段:
redis:
image: redis
container_name: redis.server
volumes:
- /docker-compose/redis/logs:/var/log/redis
三、编排与调试命令
| 场景 | 命令 |
|---|---|
| 首次构建启动 | cd /docker-compose && docker-compose up -d --build |
| 停止并清理容器+数据卷 | docker-compose down -v |
| 重启单个服务 | docker-compose restart java |
| 查看后端实时日志 | docker logs -f java |
| 查看MySQL错误日志 | tail -f /docker-compose/mysql/logs/error.log |
| 单独启动指定服务 | docker-compose up -d db java |
四、常见故障处理经验
-
出现502优先检查MySQL状态:
docker ps | grep mysql,若退出则查看初始化脚本权限:chmod +x /docker-compose/mysql/import_data.sh; -
后端连库失败时,可进入MySQL容器验证:
docker exec -it mysql.server mysql -uroot -proot,手动执行source /docker-entrypoint-initdb.d/ry_20250522.sql排查脚本语法。