# 简化版 Docker 部署指南 这是一个简化的 Docker 部署方案,直接使用已经打包好的 jar 包和 dist 文件,无需在容器内重新构建。 ## 📁 目录结构 ``` deploy/ ├── docker-compose.yml # Docker Compose 配置文件 ├── backend/ # 后端部署目录 │ ├── Dockerfile # 后端 Dockerfile │ └── ruoyi-admin.jar # 【需要放置】后端 jar 包 ├── frontend/ # 前端部署目录 │ ├── Dockerfile # 前端 Dockerfile │ ├── nginx.conf # Nginx 配置文件 │ └── dist/ # 【需要放置】前端打包文件 └── sql/ # 【可选】数据库初始化脚本 └── ry_20xx.sql ``` ## 🚀 快速部署步骤 ### 1. 准备文件 将以下文件上传到服务器的 `deploy` 目录: ```bash # 1. 将后端 jar 包放到 backend 目录 deploy/backend/ruoyi-admin.jar # 2. 将前端 dist 文件夹放到 frontend 目录 deploy/frontend/dist/ # 3. (可选)将数据库初始化脚本放到 sql 目录 deploy/sql/ry_20xx.sql ``` ### 2. 修改配置 编辑 `docker-compose.yml`,根据需要修改以下配置: ```yaml # MySQL 配置 environment: MYSQL_ROOT_PASSWORD: password # 修改为你的密码 MYSQL_DATABASE: ry-vue # 数据库名称 # 端口配置(如果端口冲突,可以修改) ports: - "3306:3306" # MySQL - "6379:6379" # Redis - "8080:8080" # 后端 - "8081:80" # 前端 ``` ### 3. 启动服务 ```bash # 进入 deploy 目录 cd deploy # 启动所有服务 docker-compose up -d # 查看服务状态 docker-compose ps # 查看日志 docker-compose logs -f ``` ### 4. 访问应用 - **前端地址**: `http://your-server-ip:8081/ashai-wecom-test` - **后端 API**: `http://your-server-ip:8080` - **默认账号**: admin / admin123 ## 📝 常用命令 ```bash # 启动所有服务 docker-compose up -d # 停止所有服务 docker-compose down # 重启某个服务 docker-compose restart backend docker-compose restart frontend # 查看服务日志 docker-compose logs -f backend docker-compose logs -f frontend # 查看服务状态 docker-compose ps # 进入容器 docker exec -it wecom-backend sh docker exec -it wecom-frontend sh # 重新构建并启动 docker-compose up -d --build # 停止并删除所有容器、网络、数据卷 docker-compose down -v ``` ## 🔄 更新部署 ### 更新后端 ```bash # 1. 停止后端服务 docker-compose stop backend # 2. 替换 jar 包 cp new-ruoyi-admin.jar backend/ruoyi-admin.jar # 3. 重新构建并启动 docker-compose up -d --build backend ``` ### 更新前端 ```bash # 1. 停止前端服务 docker-compose stop frontend # 2. 替换 dist 文件 rm -rf frontend/dist cp -r new-dist frontend/dist # 3. 重新构建并启动 docker-compose up -d --build frontend ``` ## 🔧 配置说明 ### 后端配置 后端使用 `--spring.profiles.active=prod` 启动,确保你的 jar 包中包含正确的生产环境配置: - 数据库连接:`jdbc:mysql://mysql:3306/ry-vue` - Redis 连接:`redis://redis:6379` 如果需要修改配置,可以通过环境变量或重新打包 jar。 ### 前端配置 前端通过 Nginx 提供服务,配置文件在 [frontend/nginx.conf](frontend/nginx.conf): - 访问路径:`/ashai-wecom-test` - API 代理:`/ashai-wecom-test/prod-api/` → `http://backend:8080/` ### 数据库初始化 首次启动时,如果 `sql` 目录中有 `.sql` 文件,MySQL 会自动执行这些脚本。 如果需要手动导入: ```bash # 复制 SQL 文件到容器 docker cp ry_20xx.sql wecom-mysql:/tmp/ # 进入 MySQL 容器 docker exec -it wecom-mysql bash # 导入数据库 mysql -uroot -ppassword ry-vue < /tmp/ry_20xx.sql ``` ## 🌐 集成到现有 Nginx(80 端口) 如果服务器 80 端口已有 Nginx,可以添加反向代理配置: ```nginx # 在你的 Nginx 配置中添加 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; } ``` 然后重启 Nginx: ```bash nginx -t nginx -s reload ``` ## 🐛 故障排查 ### 1. 后端无法连接数据库 ```bash # 检查 MySQL 是否启动 docker-compose ps mysql # 查看 MySQL 日志 docker-compose logs mysql # 检查网络连接 docker exec -it wecom-backend ping mysql ``` ### 2. 前端无法访问后端 API ```bash # 检查后端是否启动 docker-compose ps backend # 查看后端日志 docker-compose logs backend # 测试后端接口 curl http://localhost:8080/ ``` ### 3. 前端页面 404 ```bash # 检查 dist 文件是否正确放置 docker exec -it wecom-frontend ls -la /usr/share/nginx/html/ashai-wecom-test # 查看 Nginx 日志 docker-compose logs frontend # 检查 Nginx 配置 docker exec -it wecom-frontend cat /etc/nginx/conf.d/default.conf ``` ### 4. 端口被占用 ```bash # 查看端口占用 netstat -tulpn | grep 8080 netstat -tulpn | grep 8081 # 修改 docker-compose.yml 中的端口映射 ports: - "8082:8080" # 改为其他端口 ``` ### 5. 容器启动失败 ```bash # 查看详细日志 docker-compose logs -f # 检查容器状态 docker-compose ps # 重新构建 docker-compose down docker-compose up -d --build ``` ## 📊 数据持久化 所有数据都通过 Docker 卷持久化: - `mysql_data`: MySQL 数据 - `redis_data`: Redis 数据 - `upload_data`: 文件上传目录 即使删除容器,数据也不会丢失。如需完全清理: ```bash docker-compose down -v ``` ## 🔒 安全建议 1. **修改默认密码**:修改 MySQL root 密码和应用管理员密码 2. **限制端口访问**:使用防火墙限制数据库端口的外部访问 3. **使用 HTTPS**:在生产环境配置 SSL 证书 4. **定期备份**:定期备份数据库和上传文件 ## 📈 性能优化 1. **调整 JVM 参数**:在 [backend/Dockerfile](backend/Dockerfile) 中添加 JVM 参数 2. **配置 Nginx 缓存**:已在 [frontend/nginx.conf](frontend/nginx.conf) 中配置 3. **数据库优化**:根据实际情况调整 MySQL 配置 ## 💡 提示 - 首次启动可能需要等待 1-2 分钟,等待数据库初始化 - 确保服务器有足够的内存(建议至少 2GB) - 生产环境建议使用外部数据库,而不是容器内的数据库