7.3 KiB
7.3 KiB
若依项目 Docker 部署指南
概述
本文档说明如何使用 Docker 和 Docker Compose 部署若依项目,并通过子路径 /ashai-wecom-test 访问。
前提条件
- Docker 已安装(版本 20.10+)
- Docker Compose 已安装(版本 1.29+)
- 服务器 80 端口已被占用,需要使用其他端口(如 8081)
项目结构
wecom-dashboards/
├── Dockerfile.backend # 后端 Dockerfile
├── docker-compose.yml # Docker Compose 编排文件
├── ruoyi-ui/
│ ├── Dockerfile # 前端 Dockerfile
│ └── nginx.conf # Nginx 配置文件
├── ruoyi-admin/
│ └── src/main/resources/
│ ├── application.yml # 后端主配置
│ └── application-prod.yml # 生产环境配置
└── sql/ # 数据库初始化脚本
配置说明
1. 前端配置
前端已配置为使用子路径 /ashai-wecom-test:
- vue.config.js:
publicPath设置为/ashai-wecom-test - .env.production:
VUE_APP_BASE_API设置为/prod-api - nginx.conf: 配置了子路径访问和 API 代理
2. 后端配置
后端配置支持环境变量注入:
- 数据库连接: 通过环境变量
SPRING_DATASOURCE_URL、SPRING_DATASOURCE_USERNAME、SPRING_DATASOURCE_PASSWORD - Redis 连接: 通过环境变量
SPRING_REDIS_HOST、SPRING_REDIS_PORT - 上传路径: 使用 Docker 卷挂载
/home/ruoyi/uploadPath
3. Docker Compose 配置
包含以下服务:
- mysql: MySQL 5.7 数据库
- redis: Redis 6 缓存
- backend: Spring Boot 后端服务
- frontend: Nginx 前端服务
部署步骤
步骤 1: 准备数据库脚本
确保 sql/ 目录下有数据库初始化脚本:
cd Ruoyi-Vue-2/wecom-dashboards
ls sql/
# 应该包含: ry_20250522.sql, quartz.sql, schema.sql 等
步骤 2: 修改配置(可选)
如果需要修改数据库密码或其他配置,编辑 docker-compose.yml:
services:
mysql:
environment:
MYSQL_ROOT_PASSWORD: your_password # 修改数据库密码
backend:
environment:
SPRING_DATASOURCE_PASSWORD: your_password # 同步修改
步骤 3: 构建和启动服务
# 进入项目目录
cd Ruoyi-Vue-2/wecom-dashboards
# 构建并启动所有服务
docker-compose up -d --build
# 查看服务状态
docker-compose ps
# 查看日志
docker-compose logs -f
步骤 4: 等待服务启动
首次启动需要等待:
- MySQL 初始化数据库(约 1-2 分钟)
- 后端服务启动(约 30 秒)
- 前端服务启动(约 10 秒)
查看后端日志确认启动成功:
docker-compose logs -f backend
# 看到 "Started RuoYiApplication" 表示启动成功
步骤 5: 访问应用
前端服务运行在 8081 端口,通过以下 URL 访问:
http://your-server-ip:8081/ashai-wecom-test
默认登录账号:
- 用户名:
admin - 密码:
admin123
集成到现有 Nginx
如果你的服务器 80 端口已经有 Nginx 在运行,可以通过反向代理将请求转发到容器:
方案 1: Nginx 反向代理(推荐)
在你现有的 Nginx 配置中添加:
# /etc/nginx/conf.d/ruoyi.conf 或在主配置文件中添加
server {
listen 80;
server_name your-domain.com; # 替换为你的域名
# 其他现有配置...
# 若依项目代理
location /ashai-wecom-test {
proxy_pass http://localhost:8081/ashai-wecom-test;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 600;
proxy_read_timeout 600;
}
}
重启 Nginx:
nginx -t # 测试配置
nginx -s reload # 重新加载配置
现在可以通过以下 URL 访问:
http://your-domain.com/ashai-wecom-test
方案 2: 修改 Docker Compose 端口映射
如果不想使用反向代理,可以修改 docker-compose.yml 中的端口映射:
services:
frontend:
ports:
- "8081:80" # 改为其他未占用的端口
常用命令
# 启动服务
docker-compose up -d
# 停止服务
docker-compose down
# 重启服务
docker-compose restart
# 查看日志
docker-compose logs -f [service_name]
# 进入容器
docker-compose exec backend bash
docker-compose exec frontend sh
# 重新构建并启动
docker-compose up -d --build
# 清理所有数据(包括数据库)
docker-compose down -v
数据持久化
Docker Compose 配置了以下数据卷:
mysql-data: MySQL 数据库文件redis-data: Redis 持久化数据upload-data: 文件上传目录
数据会持久化保存,即使容器重启也不会丢失。
备份和恢复
备份数据库
docker-compose exec mysql mysqldump -uroot -ppassword ruoyi > backup.sql
恢复数据库
docker-compose exec -T mysql mysql -uroot -ppassword ruoyi < backup.sql
备份上传文件
docker cp ruoyi-backend:/home/ruoyi/uploadPath ./uploadPath_backup
故障排查
1. 前端无法访问
检查前端容器日志:
docker-compose logs frontend
确认 Nginx 配置正确:
docker-compose exec frontend cat /etc/nginx/conf.d/default.conf
2. 后端无法连接数据库
检查后端日志:
docker-compose logs backend
确认 MySQL 已启动:
docker-compose ps mysql
进入 MySQL 容器检查:
docker-compose exec mysql mysql -uroot -ppassword -e "SHOW DATABASES;"
3. API 请求失败
检查 Nginx 代理配置:
docker-compose exec frontend cat /etc/nginx/conf.d/default.conf
确认后端服务可访问:
curl http://localhost:8080/
4. 前端静态资源 404
确认前端构建时 publicPath 配置正确:
# 检查 vue.config.js
cat ruoyi-ui/vue.config.js | grep publicPath
确认 Nginx 中的文件路径:
docker-compose exec frontend ls -la /usr/share/nginx/html/ashai-wecom-test
性能优化
1. 调整 JVM 参数
修改 Dockerfile.backend,在 ENTRYPOINT 中添加 JVM 参数:
ENTRYPOINT ["java", "-Xms512m", "-Xmx1024m", "-jar", "app.jar"]
2. 启用 Nginx Gzip
前端 Dockerfile 已配置 gzip 压缩,确保 Nginx 配置中启用:
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
3. 调整数据库连接池
修改 application-prod.yml 中的 Druid 配置。
安全建议
- 修改默认密码: 修改 MySQL root 密码和应用管理员密码
- 配置 Redis 密码: 在生产环境中为 Redis 设置密码
- 使用 HTTPS: 配置 SSL 证书,使用 HTTPS 访问
- 限制端口访问: 使用防火墙限制数据库和 Redis 端口的外部访问
- 定期备份: 设置定时任务定期备份数据库和文件
更新部署
当代码更新后,重新部署:
# 拉取最新代码
git pull
# 重新构建并启动
docker-compose up -d --build
# 查看日志确认启动成功
docker-compose logs -f
联系支持
如有问题,请查看:
- 若依官方文档: http://doc.ruoyi.vip
- Docker 官方文档: https://docs.docker.com
- 项目 README: ./README.md