304 lines
6.5 KiB
Markdown
304 lines
6.5 KiB
Markdown
# RTSP视频分析系统 Docker部署方案
|
||
|
||
## 📋 目录结构
|
||
|
||
```
|
||
rtsp-video-analysis-system/
|
||
├── .env # 环境变量配置文件
|
||
├── docker-compose.yml # Docker Compose编排文件
|
||
├── ruoyi-admin/
|
||
│ └── Dockerfile # Java后端Dockerfile
|
||
├── rtsp-vue/
|
||
│ ├── Dockerfile # 前端Dockerfile
|
||
│ └── nginx.conf # Nginx配置文件
|
||
├── python-inference-service/
|
||
│ └── Dockerfile # Python推理服务Dockerfile
|
||
└── sql/ # 数据库初始化脚本
|
||
```
|
||
|
||
## 🚀 快速开始
|
||
|
||
### 1. 前置要求
|
||
|
||
- Docker 20.10+
|
||
- Docker Compose 2.0+
|
||
- (可选)NVIDIA Docker Runtime(如需GPU支持)
|
||
|
||
### 2. 准备工作
|
||
|
||
#### 2.1 配置环境变量
|
||
|
||
编辑 `.env` 文件,根据需要调整配置:
|
||
|
||
```bash
|
||
# MySQL数据库配置
|
||
MYSQL_ROOT_PASSWORD=ruoyi123
|
||
MYSQL_DATABASE=ry-vue
|
||
MYSQL_USER=ruoyi
|
||
MYSQL_PASSWORD=ruoyi123
|
||
|
||
# MinIO对象存储配置
|
||
MINIO_ROOT_USER=minio
|
||
MINIO_ROOT_PASSWORD=minio123
|
||
|
||
# 其他配置...
|
||
```
|
||
|
||
#### 2.2 准备数据库初始化脚本
|
||
|
||
将数据库SQL脚本放到 `sql/` 目录:
|
||
|
||
```bash
|
||
# 示例
|
||
cp sql/fad_watch.sql sql/
|
||
cp sql/ry_face.sql sql/
|
||
```
|
||
|
||
### 3. 启动服务
|
||
|
||
#### 3.1 构建并启动所有服务
|
||
|
||
```bash
|
||
# 启动所有服务
|
||
docker-compose up -d
|
||
|
||
# 查看服务状态
|
||
docker-compose ps
|
||
|
||
# 查看日志
|
||
docker-compose logs -f
|
||
```
|
||
|
||
#### 3.2 查看特定服务日志
|
||
|
||
```bash
|
||
# 查看后端日志
|
||
docker-compose logs -f backend
|
||
|
||
# 查看前端日志
|
||
docker-compose logs -f frontend
|
||
|
||
# 查看Python服务日志
|
||
docker-compose logs -f python-service
|
||
```
|
||
|
||
### 4. 访问服务
|
||
|
||
- **前端界面**: http://localhost:10080 (或配置的FRONTEND_PORT)
|
||
- **后端API**: 通过前端的 `/prod-api/` 路径访问
|
||
- **Python推理API**: 通过前端的 `/python-api/` 路径访问
|
||
- **MinIO控制台**: 仅容器内部访问(如需外部访问,需修改docker-compose.yml)
|
||
|
||
> 注意:除前端外,其他服务端口均不对外暴露,仅容器间通信使用。
|
||
|
||
## 🔧 服务说明
|
||
|
||
### 服务列表
|
||
|
||
| 服务名称 | 容器名称 | 端口(内部) | 端口(外部) | 说明 |
|
||
|---------|---------|------------|------------|------|
|
||
| mysql | rtsp-mysql | 3306 | - | MySQL数据库 |
|
||
| redis | rtsp-redis | 6379 | - | Redis缓存 |
|
||
| python-service | rtsp-python-service | 8000 | - | Python推理服务(CPU) |
|
||
| backend | rtsp-backend | 8080 | - | Java后端服务 |
|
||
| frontend | rtsp-frontend | 80 | 10080 | Vue前端服务 |
|
||
|
||
**注意**:
|
||
- MinIO使用外部已部署的服务(http://49.232.154.205:10900)
|
||
- Python推理服务使用CPU模式,不需要GPU
|
||
|
||
### 服务依赖关系
|
||
|
||
```
|
||
frontend
|
||
└── backend
|
||
├── mysql
|
||
├── redis
|
||
├── python-service
|
||
└── minio (外部服务)
|
||
```
|
||
|
||
## ⚙️ 高级配置
|
||
|
||
### 1. 修改前端暴露端口
|
||
|
||
编辑 `.env` 文件:
|
||
|
||
```bash
|
||
FRONTEND_PORT=8080 # 修改为你想要的端口
|
||
```
|
||
|
||
### 2. 如需外部访问其他服务
|
||
|
||
编辑 `docker-compose.yml`,在对应服务下添加 `ports` 配置:
|
||
|
||
```yaml
|
||
mysql:
|
||
# ... 其他配置
|
||
ports:
|
||
- "3306:3306" # 添加端口映射
|
||
```
|
||
|
||
### 3. 调整Java后端内存
|
||
|
||
编辑 `ruoyi-admin/Dockerfile`:
|
||
|
||
```dockerfile
|
||
ENV JAVA_OPTS="-Xms1g -Xmx2g -Djava.security.egd=file:/dev/./urandom"
|
||
```
|
||
|
||
或在 `docker-compose.yml` 中添加环境变量:
|
||
|
||
```yaml
|
||
backend:
|
||
environment:
|
||
JAVA_OPTS: "-Xms1g -Xmx2g"
|
||
```
|
||
|
||
### 4. MinIO配置
|
||
|
||
本系统使用**外部已部署的MinIO服务**,配置在 `ruoyi-admin/src/main/resources/application.yml`:
|
||
|
||
```yaml
|
||
minio:
|
||
enabled: true
|
||
endpoint: http://49.232.154.205:10900
|
||
access-key: 4EsLD9g9OM09DT0HaBKj
|
||
secret-key: 05SFC5fleqTnaLRYBrxHiphMFYbGX5nYicj0WCHA
|
||
bucket: rtsp
|
||
```
|
||
|
||
如需修改MinIO配置,请编辑上述文件。
|
||
|
||
## 🔍 故障排查
|
||
|
||
### 1. 查看服务健康状态
|
||
|
||
```bash
|
||
docker-compose ps
|
||
```
|
||
|
||
健康的服务会显示 `healthy` 状态。
|
||
|
||
### 2. 查看容器日志
|
||
|
||
```bash
|
||
# 查看所有服务日志
|
||
docker-compose logs
|
||
|
||
# 查看特定服务的最新日志
|
||
docker-compose logs --tail=100 -f backend
|
||
```
|
||
|
||
### 3. 进入容器调试
|
||
|
||
```bash
|
||
# 进入后端容器
|
||
docker exec -it rtsp-backend sh
|
||
|
||
# 进入前端容器
|
||
docker exec -it rtsp-frontend sh
|
||
|
||
# 进入Python服务容器
|
||
docker exec -it rtsp-python-service bash
|
||
```
|
||
|
||
### 4. 重启服务
|
||
|
||
```bash
|
||
# 重启单个服务
|
||
docker-compose restart backend
|
||
|
||
# 重启所有服务
|
||
docker-compose restart
|
||
```
|
||
|
||
### 5. 完全重建服务
|
||
|
||
```bash
|
||
# 停止并删除所有容器
|
||
docker-compose down
|
||
|
||
# 重新构建并启动
|
||
docker-compose up -d --build
|
||
```
|
||
|
||
### 6. 清理数据重新开始
|
||
|
||
```bash
|
||
# 停止并删除所有容器和数据卷
|
||
docker-compose down -v
|
||
|
||
# 重新启动
|
||
docker-compose up -d
|
||
```
|
||
|
||
## 📦 数据持久化
|
||
|
||
以下数据会持久化存储:
|
||
|
||
- `mysql-data`: MySQL数据库数据
|
||
- `redis-data`: Redis持久化数据
|
||
- `backend-logs`: 后端服务日志
|
||
- `backend-upload`: 后端上传文件
|
||
|
||
**注意**:MinIO数据存储在外部服务器,不在本地
|
||
|
||
## 🔒 安全建议
|
||
|
||
1. **修改默认密码**:部署到生产环境前,请修改 `.env` 中的所有默认密码
|
||
2. **限制网络访问**:使用防火墙规则限制对前端端口的访问
|
||
3. **HTTPS配置**:在生产环境中,建议配置HTTPS(可使用Nginx反向代理+Let's Encrypt)
|
||
4. **定期备份**:定期备份数据卷内容
|
||
|
||
## 🔄 更新部署
|
||
|
||
```bash
|
||
# 1. 拉取最新代码
|
||
git pull
|
||
|
||
# 2. 重新构建镜像
|
||
docker-compose build
|
||
|
||
# 3. 重启服务
|
||
docker-compose up -d
|
||
```
|
||
|
||
## 📝 常见问题
|
||
|
||
### Q1: 后端启动失败,提示连接不到数据库
|
||
|
||
**A**: 检查MySQL是否已完全启动。使用 `docker-compose logs mysql` 查看MySQL日志。
|
||
|
||
### Q2: 前端无法连接后端API
|
||
|
||
**A**: 确认nginx配置中的后端地址是否正确,应该使用容器名 `rtsp-backend` 而不是 `localhost`。
|
||
|
||
### Q3: Python推理服务启动慢
|
||
|
||
**A**:
|
||
1. 首次启动需要下载Ultralytics YOLOv8依赖,这可能需要一些时间
|
||
2. 确保`python-inference-service/models/best.pt`文件存在
|
||
3. 使用 `docker-compose logs python-service` 查看进度
|
||
|
||
### Q4: 如何更换MinIO服务
|
||
|
||
**A**: 修改 `ruoyi-admin/src/main/resources/application.yml` 中的MinIO配置:
|
||
```yaml
|
||
minio:
|
||
endpoint: http://your-minio-server:port
|
||
access-key: your-access-key
|
||
secret-key: your-secret-key
|
||
bucket: your-bucket
|
||
```
|
||
|
||
## 📞 支持
|
||
|
||
如有问题,请查看:
|
||
- 项目GitHub Issues
|
||
- 查看服务日志进行调试
|
||
- 检查环境变量配置是否正确
|
||
|
||
## <20><> 许可证
|
||
|
||
[根据项目实际许可证填写] |