Files
rtsp-video-analysis-system/README-DOCKER.md
2025-09-30 14:23:33 +08:00

304 lines
6.5 KiB
Markdown
Raw 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.

# 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><> 许可证
[根据项目实际许可证填写]