6.2 KiB
6.2 KiB
A股量化交易系统 Docker 部署指南
📋 概述
本指南将帮助您使用 Docker 快速部署 A股量化交易系统。系统包含 Web 界面、数据采集服务和可选的 Nginx 反向代理。
🔧 环境要求
- Docker >= 20.10
- Docker Compose >= 2.0
- 系统内存 >= 2GB
- 磁盘空间 >= 5GB
🚀 快速开始
1. 克隆项目
git clone <your-repo-url>
cd TradingAI
2. 一键启动
# 使用启动脚本(推荐)
./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
# 数据库配置
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"
🛠️ 管理命令
使用启动脚本
# 启动所有服务
./docker-start.sh start
# 停止所有服务
./docker-start.sh stop
# 重启服务
./docker-start.sh restart
# 查看实时日志
./docker-start.sh logs
# 清理所有数据(危险操作)
./docker-start.sh cleanup
使用 Docker Compose
# 启动服务
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
📊 监控和调试
健康检查
系统提供了健康检查端点:
# 检查 Web 服务状态
curl http://localhost:8080/api/stats
# 检查 Docker 容器健康状态
docker-compose ps
日志查看
# 查看所有服务日志
docker-compose logs -f
# 查看特定服务日志
docker-compose logs -f trading-web
# 查看容器内日志文件
docker exec -it trading-ai-web tail -f /app/logs/trading.log
进入容器调试
# 进入 Web 服务容器
docker exec -it trading-ai-web bash
# 进入采集服务容器
docker exec -it trading-ai-collector bash
# 查看容器资源使用情况
docker stats
🔧 自定义配置
修改端口
编辑 docker-compose.yml:
services:
trading-web:
ports:
- "9090:8080" # 将外部端口改为 9090
添加环境变量
services:
trading-web:
environment:
- FLASK_ENV=production
- DATABASE_URL=sqlite:///data/trading.db
- LOG_LEVEL=DEBUG
配置数据持久化
services:
trading-web:
volumes:
- trading-data:/app/data
- ./config:/app/config:ro # 只读挂载
volumes:
trading-data:
driver: local
🛡️ 安全配置
SSL/HTTPS 配置
- 将 SSL 证书放置在
nginx/ssl/目录 - 修改
nginx/nginx.conf添加 HTTPS 配置:
server {
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
# SSL 配置...
}
防火墙配置
# 只允许必要端口
sudo ufw allow 80
sudo ufw allow 443
sudo ufw allow 8080
🚨 故障排除
常见问题
-
端口被占用
# 查找占用端口的进程 sudo lsof -i :8080 # 修改 docker-compose.yml 中的端口映射 -
权限问题
# 修复数据目录权限 sudo chown -R $USER:$USER data/ logs/ -
内存不足
# 清理不使用的镜像 docker system prune -a # 限制容器内存使用 docker-compose up -d --memory="1g" -
数据库锁定
# 重启服务解决数据库锁定 docker-compose restart trading-web
日志级别调整
修改 config/config.yaml:
logging:
level: "DEBUG" # DEBUG, INFO, WARNING, ERROR
file: "logs/trading.log"
📈 性能优化
资源限制
services:
trading-web:
deploy:
resources:
limits:
cpus: '0.5'
memory: 512M
reservations:
cpus: '0.25'
memory: 256M
缓存优化
# 使用多阶段构建减小镜像大小
# 启用 Docker BuildKit
export DOCKER_BUILDKIT=1
docker-compose build
🔄 更新和备份
更新系统
# 拉取最新代码
git pull
# 重新构建和启动
docker-compose up -d --build
备份数据
# 备份数据库和配置
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
恢复数据
# 恢复备份
tar -xzf backup-20231201.tar.gz
# 重启服务
docker-compose restart
📞 支持
如果遇到问题,请:
- 查看本文档的故障排除部分
- 检查容器日志:
docker-compose logs -f - 提交 GitHub Issue 并附上相关日志
📄 许可证
本项目采用 MIT 许可证,详见 LICENSE 文件。