295 lines
6.4 KiB
Markdown
295 lines
6.4 KiB
Markdown
|
|
# 🎉 Docker部署方案更新总结
|
|||
|
|
|
|||
|
|
根据您的需求,已完成以下更新:
|
|||
|
|
|
|||
|
|
## ✅ 主要变更
|
|||
|
|
|
|||
|
|
### 1. YOLOv5 → YOLOv8 (Ultralytics)
|
|||
|
|
|
|||
|
|
| 变更项 | 之前 | 现在 |
|
|||
|
|
|-------|------|------|
|
|||
|
|
| Python包 | `yolov5>=7.0.0` | `ultralytics>=8.0.0` |
|
|||
|
|
| 模型文件 | `garbage_model.py` | `yolov8_model.py` |
|
|||
|
|
| 模型名称 | `garbage_detector` | `yolov8_detector` |
|
|||
|
|
| API框架 | yolov5 | Ultralytics YOLO |
|
|||
|
|
|
|||
|
|
**优势:**
|
|||
|
|
- ✨ 更高的检测精度
|
|||
|
|
- ⚡ 更快的推理速度
|
|||
|
|
- 🎯 更简单的API接口
|
|||
|
|
- 📚 更好的官方文档支持
|
|||
|
|
|
|||
|
|
### 2. 前端端口调整
|
|||
|
|
|
|||
|
|
| 变更项 | 之前 | 现在 |
|
|||
|
|
|-------|------|------|
|
|||
|
|
| 对外端口 | 80 | 10080 |
|
|||
|
|
| 容器内部端口 | 80 | 80 |
|
|||
|
|
| 访问地址 | http://localhost | http://localhost:10080 |
|
|||
|
|
|
|||
|
|
**修改文件:**
|
|||
|
|
- `.env` - `FRONTEND_PORT=10080`
|
|||
|
|
- 所有文档中的访问地址
|
|||
|
|
|
|||
|
|
## 📦 新增文件
|
|||
|
|
|
|||
|
|
### 1. YOLOv8模型支持
|
|||
|
|
- `python-inference-service/models/yolov8_model.py` - YOLOv8模型包装类
|
|||
|
|
- `YOLOV8-SETUP.md` - YOLOv8配置和使用指南
|
|||
|
|
- 更新 `python-inference-service/README.md` - 详细的YOLOv8文档
|
|||
|
|
|
|||
|
|
### 2. 配置文件更新
|
|||
|
|
- 更新 `python-inference-service/requirements.txt` - ultralytics依赖
|
|||
|
|
- 更新 `python-inference-service/models/models.json` - 指向yolov8_model
|
|||
|
|
|
|||
|
|
### 3. 文档更新
|
|||
|
|
- `README-DOCKER.md` - 更新端口和YOLOv8说明
|
|||
|
|
- `DOCKER-QUICK-START.md` - 更新访问地址和YOLOv8说明
|
|||
|
|
- `deploy.bat` / `deploy.sh` - 更新访问地址
|
|||
|
|
- `UPDATE-SUMMARY.md` - 本文档
|
|||
|
|
|
|||
|
|
## 🚀 使用指南
|
|||
|
|
|
|||
|
|
### 准备工作
|
|||
|
|
|
|||
|
|
1. **准备YOLOv8模型文件**
|
|||
|
|
```bash
|
|||
|
|
# 将训练好的模型放到指定位置
|
|||
|
|
python-inference-service/models/best.pt
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. **创建类别文件**(可选)
|
|||
|
|
```bash
|
|||
|
|
# 创建 classes.txt,每行一个类别名
|
|||
|
|
python-inference-service/models/classes.txt
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. **检查环境变量**
|
|||
|
|
```bash
|
|||
|
|
# 查看 .env 文件,确认端口配置
|
|||
|
|
FRONTEND_PORT=10080
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 快速部署
|
|||
|
|
|
|||
|
|
#### Windows
|
|||
|
|
```batch
|
|||
|
|
deploy.bat
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### Linux/Mac
|
|||
|
|
```bash
|
|||
|
|
chmod +x deploy.sh
|
|||
|
|
./deploy.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 手动部署
|
|||
|
|
```bash
|
|||
|
|
# 1. 启动所有服务
|
|||
|
|
docker-compose up -d
|
|||
|
|
|
|||
|
|
# 2. 查看服务状态
|
|||
|
|
docker-compose ps
|
|||
|
|
|
|||
|
|
# 3. 查看日志
|
|||
|
|
docker-compose logs -f python-service
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 访问系统
|
|||
|
|
|
|||
|
|
部署成功后访问:
|
|||
|
|
- **前端界面**: http://localhost:10080
|
|||
|
|
- **后端API**: http://localhost:10080/prod-api/
|
|||
|
|
- **Python API**: http://localhost:10080/python-api/
|
|||
|
|
- **API文档**: http://localhost:10080/prod-api/swagger-ui.html
|
|||
|
|
|
|||
|
|
## 📋 YOLOv8模型要求
|
|||
|
|
|
|||
|
|
### 模型训练
|
|||
|
|
|
|||
|
|
如果需要训练新模型:
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
from ultralytics import YOLO
|
|||
|
|
|
|||
|
|
# 加载预训练模型
|
|||
|
|
model = YOLO('yolov8n.pt') # n/s/m/l/x
|
|||
|
|
|
|||
|
|
# 训练
|
|||
|
|
results = model.train(
|
|||
|
|
data='data.yaml',
|
|||
|
|
epochs=100,
|
|||
|
|
imgsz=640,
|
|||
|
|
batch=16
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
# 模型保存在 runs/detect/train/weights/best.pt
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 模型部署
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 1. 复制模型到项目
|
|||
|
|
cp runs/detect/train/weights/best.pt python-inference-service/models/
|
|||
|
|
|
|||
|
|
# 2. 创建类别文件
|
|||
|
|
cat > python-inference-service/models/classes.txt << EOF
|
|||
|
|
class1
|
|||
|
|
class2
|
|||
|
|
class3
|
|||
|
|
EOF
|
|||
|
|
|
|||
|
|
# 3. 重启服务
|
|||
|
|
docker-compose restart python-service
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🔧 配置说明
|
|||
|
|
|
|||
|
|
### 环境变量(.env)
|
|||
|
|
|
|||
|
|
所有配置集中在一个文件:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 前端端口
|
|||
|
|
FRONTEND_PORT=10080
|
|||
|
|
|
|||
|
|
# MySQL
|
|||
|
|
MYSQL_HOST=rtsp-mysql
|
|||
|
|
MYSQL_PORT=3306
|
|||
|
|
MYSQL_PASSWORD=ruoyi123
|
|||
|
|
|
|||
|
|
# Redis
|
|||
|
|
REDIS_HOST=rtsp-redis
|
|||
|
|
|
|||
|
|
# MinIO
|
|||
|
|
MINIO_HOST=rtsp-minio
|
|||
|
|
MINIO_ACCESS_KEY=minio
|
|||
|
|
MINIO_SECRET_KEY=minio123
|
|||
|
|
|
|||
|
|
# Python服务
|
|||
|
|
PYTHON_SERVICE_HOST=rtsp-python-service
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 模型配置(models.json)
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
[
|
|||
|
|
{
|
|||
|
|
"name": "yolov8_detector",
|
|||
|
|
"path": "models/yolov8_model.py",
|
|||
|
|
"size": [640, 640]
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 性能调优
|
|||
|
|
|
|||
|
|
编辑 `yolov8_model.py`:
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
# 置信度阈值
|
|||
|
|
self.conf_threshold = 0.25 # 默认0.25
|
|||
|
|
|
|||
|
|
# 输入尺寸
|
|||
|
|
self.img_size = 640 # 320/640/1280
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🎯 服务架构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
┌─────────────┐
|
|||
|
|
│ Browser │
|
|||
|
|
│ :10080 │ ← 唯一对外暴露
|
|||
|
|
└──────┬──────┘
|
|||
|
|
│
|
|||
|
|
┌──────▼──────┐
|
|||
|
|
│ Frontend │
|
|||
|
|
│ Nginx │
|
|||
|
|
└──────┬──────┘
|
|||
|
|
│
|
|||
|
|
┌───┴────────────────┐
|
|||
|
|
│ │
|
|||
|
|
┌──▼───────┐ ┌──────▼──────┐
|
|||
|
|
│ Backend │ │ Python │
|
|||
|
|
│ :8080 │ │ Service │
|
|||
|
|
│ │ │ :8000(CPU) │
|
|||
|
|
└───┬──┬───┘ └─────────────┘
|
|||
|
|
│ │
|
|||
|
|
┌───▼──▼───┐ ┌─────────────┐
|
|||
|
|
│ MySQL │ │ MinIO(外部) │
|
|||
|
|
│ Redis │ │ 49.232... │
|
|||
|
|
└──────────┘ └─────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## ⚠️ 重要提示
|
|||
|
|
|
|||
|
|
### 必须操作
|
|||
|
|
1. ✅ 将 `best.pt` 文件放到 `python-inference-service/models/` 目录
|
|||
|
|
2. ✅ 确保模型是 YOLOv8 训练的(不支持YOLOv5直接使用)
|
|||
|
|
3. ✅ 首次启动等待1-2分钟
|
|||
|
|
|
|||
|
|
### 可选操作
|
|||
|
|
1. 📝 创建 `classes.txt` 类别文件
|
|||
|
|
2. 🎨 调整置信度阈值
|
|||
|
|
3. 🔧 修改MinIO配置(如需更换服务器)
|
|||
|
|
|
|||
|
|
### 常见问题
|
|||
|
|
|
|||
|
|
#### Q1: 模型加载失败
|
|||
|
|
```bash
|
|||
|
|
# 检查模型文件
|
|||
|
|
ls -lh python-inference-service/models/best.pt
|
|||
|
|
|
|||
|
|
# 查看日志
|
|||
|
|
docker-compose logs python-service
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### Q2: 端口被占用
|
|||
|
|
```bash
|
|||
|
|
# 修改 .env 文件
|
|||
|
|
FRONTEND_PORT=8080 # 改为其他端口
|
|||
|
|
|
|||
|
|
# 重启服务
|
|||
|
|
docker-compose down
|
|||
|
|
docker-compose up -d
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### Q3: 如何更换MinIO服务
|
|||
|
|
```bash
|
|||
|
|
# 编辑 ruoyi-admin/src/main/resources/application.yml
|
|||
|
|
minio:
|
|||
|
|
endpoint: http://your-server:port
|
|||
|
|
access-key: your-key
|
|||
|
|
secret-key: your-secret
|
|||
|
|
bucket: your-bucket
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 📖 文档导航
|
|||
|
|
|
|||
|
|
- 📘 **完整部署文档**: `README-DOCKER.md`
|
|||
|
|
- 🚀 **快速开始**: `DOCKER-QUICK-START.md`
|
|||
|
|
- 🤖 **YOLOv8配置**: `YOLOV8-SETUP.md`
|
|||
|
|
- 📋 **文件清单**: `DEPLOYMENT-FILES.md`
|
|||
|
|
- 🐍 **Python服务**: `python-inference-service/README.md`
|
|||
|
|
|
|||
|
|
## 🎓 学习资源
|
|||
|
|
|
|||
|
|
- [Ultralytics YOLOv8官方文档](https://docs.ultralytics.com/)
|
|||
|
|
- [YOLOv8训练教程](https://docs.ultralytics.com/modes/train/)
|
|||
|
|
- [Docker部署最佳实践](https://docs.docker.com/develop/dev-best-practices/)
|
|||
|
|
|
|||
|
|
## 💡 技术支持
|
|||
|
|
|
|||
|
|
遇到问题?
|
|||
|
|
|
|||
|
|
1. 查看日志:`docker-compose logs [服务名]`
|
|||
|
|
2. 查看服务状态:`docker-compose ps`
|
|||
|
|
3. 查看相关文档
|
|||
|
|
4. 检查模型文件和配置
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**更新日期**: 2025-09-30
|
|||
|
|
**适用版本**: Docker Compose 3.8+, YOLOv8 8.0+
|
|||
|
|
|
|||
|
|
✅ 所有更新已完成,可以直接使用!
|