wecom-dashboards/deploy/README.md

294 lines
6.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 简化版 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
```
## 🌐 集成到现有 Nginx80 端口)
如果服务器 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
- 生产环境建议使用外部数据库,而不是容器内的数据库