trading.ai/DOCKER_DEPLOY.md
2025-09-18 20:54:30 +08:00

367 lines
6.2 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.

# A股量化交易系统 Docker 部署指南
## 📋 概述
本指南将帮助您使用 Docker 快速部署 A股量化交易系统。系统包含 Web 界面、数据采集服务和可选的 Nginx 反向代理。
## 🔧 环境要求
- Docker >= 20.10
- Docker Compose >= 2.0
- 系统内存 >= 2GB
- 磁盘空间 >= 5GB
## 🚀 快速开始
### 1. 克隆项目
```bash
git clone <your-repo-url>
cd TradingAI
```
### 2. 一键启动
```bash
# 使用启动脚本(推荐)
./docker-start.sh start
# 或者直接使用 docker-compose
docker-compose up -d
```
### 3. 访问系统
- Web 界面http://localhost:8080
- Nginx 代理http://localhost如果启用
## 📁 项目结构
```
TradingAI/
├── Dockerfile # 主应用镜像
├── docker-compose.yml # 服务编排配置
├── docker-start.sh # 启动管理脚本
├── .dockerignore # Docker 忽略文件
├── config/ # 配置文件目录
├── data/ # 数据持久化目录
├── logs/ # 日志文件目录
└── nginx/ # Nginx 配置目录
```
## 🐳 服务说明
### trading-web
- **功能**Web 界面服务
- **端口**8080
- **健康检查**/api/stats
- **数据卷**
- `./data:/app/data` - 数据库文件
- `./config:/app/config` - 配置文件
- `./logs:/app/logs` - 日志文件
### trading-collector
- **功能**:数据采集和策略执行
- **调度**:每天 9:00 和 15:00 执行
- **依赖**trading-web
### nginx可选
- **功能**:反向代理和负载均衡
- **端口**80, 443
- **配置**nginx/nginx.conf
## ⚙️ 配置文件
### config/config.yaml
```yaml
# 数据库配置
database:
path: "data/trading.db"
# 数据源配置
data_source:
provider: "adata"
# 策略配置
strategy:
kline_pattern:
min_entity_ratio: 0.55
final_yang_min_ratio: 0.40
max_turnover_ratio: 40.0
timeframes: ["daily", "weekly"]
# 通知配置
notification:
dingtalk:
enabled: false
webhook_url: ""
# 日志配置
logging:
level: "INFO"
file: "logs/trading.log"
```
## 🛠️ 管理命令
### 使用启动脚本
```bash
# 启动所有服务
./docker-start.sh start
# 停止所有服务
./docker-start.sh stop
# 重启服务
./docker-start.sh restart
# 查看实时日志
./docker-start.sh logs
# 清理所有数据(危险操作)
./docker-start.sh cleanup
```
### 使用 Docker Compose
```bash
# 启动服务
docker-compose up -d
# 停止服务
docker-compose down
# 查看服务状态
docker-compose ps
# 查看日志
docker-compose logs -f [service_name]
# 重启特定服务
docker-compose restart trading-web
# 重新构建镜像
docker-compose build --no-cache
# 扩展服务实例
docker-compose up -d --scale trading-web=2
```
## 📊 监控和调试
### 健康检查
系统提供了健康检查端点:
```bash
# 检查 Web 服务状态
curl http://localhost:8080/api/stats
# 检查 Docker 容器健康状态
docker-compose ps
```
### 日志查看
```bash
# 查看所有服务日志
docker-compose logs -f
# 查看特定服务日志
docker-compose logs -f trading-web
# 查看容器内日志文件
docker exec -it trading-ai-web tail -f /app/logs/trading.log
```
### 进入容器调试
```bash
# 进入 Web 服务容器
docker exec -it trading-ai-web bash
# 进入采集服务容器
docker exec -it trading-ai-collector bash
# 查看容器资源使用情况
docker stats
```
## 🔧 自定义配置
### 修改端口
编辑 `docker-compose.yml`
```yaml
services:
trading-web:
ports:
- "9090:8080" # 将外部端口改为 9090
```
### 添加环境变量
```yaml
services:
trading-web:
environment:
- FLASK_ENV=production
- DATABASE_URL=sqlite:///data/trading.db
- LOG_LEVEL=DEBUG
```
### 配置数据持久化
```yaml
services:
trading-web:
volumes:
- trading-data:/app/data
- ./config:/app/config:ro # 只读挂载
volumes:
trading-data:
driver: local
```
## 🛡️ 安全配置
### SSL/HTTPS 配置
1. 将 SSL 证书放置在 `nginx/ssl/` 目录
2. 修改 `nginx/nginx.conf` 添加 HTTPS 配置:
```nginx
server {
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
# SSL 配置...
}
```
### 防火墙配置
```bash
# 只允许必要端口
sudo ufw allow 80
sudo ufw allow 443
sudo ufw allow 8080
```
## 🚨 故障排除
### 常见问题
1. **端口被占用**
```bash
# 查找占用端口的进程
sudo lsof -i :8080
# 修改 docker-compose.yml 中的端口映射
```
2. **权限问题**
```bash
# 修复数据目录权限
sudo chown -R $USER:$USER data/ logs/
```
3. **内存不足**
```bash
# 清理不使用的镜像
docker system prune -a
# 限制容器内存使用
docker-compose up -d --memory="1g"
```
4. **数据库锁定**
```bash
# 重启服务解决数据库锁定
docker-compose restart trading-web
```
### 日志级别调整
修改 `config/config.yaml`
```yaml
logging:
level: "DEBUG" # DEBUG, INFO, WARNING, ERROR
file: "logs/trading.log"
```
## 📈 性能优化
### 资源限制
```yaml
services:
trading-web:
deploy:
resources:
limits:
cpus: '0.5'
memory: 512M
reservations:
cpus: '0.25'
memory: 256M
```
### 缓存优化
```bash
# 使用多阶段构建减小镜像大小
# 启用 Docker BuildKit
export DOCKER_BUILDKIT=1
docker-compose build
```
## 🔄 更新和备份
### 更新系统
```bash
# 拉取最新代码
git pull
# 重新构建和启动
docker-compose up -d --build
```
### 备份数据
```bash
# 备份数据库和配置
tar -czf backup-$(date +%Y%m%d).tar.gz data/ config/
# 使用 Docker 卷备份
docker run --rm -v trading_data:/data -v $(pwd):/backup ubuntu tar czf /backup/data-backup.tar.gz /data
```
### 恢复数据
```bash
# 恢复备份
tar -xzf backup-20231201.tar.gz
# 重启服务
docker-compose restart
```
## 📞 支持
如果遇到问题,请:
1. 查看本文档的故障排除部分
2. 检查容器日志:`docker-compose logs -f`
3. 提交 GitHub Issue 并附上相关日志
## 📄 许可证
本项目采用 MIT 许可证,详见 LICENSE 文件。