# A股量化交易系统 Docker 部署指南 ## 📋 概述 本指南将帮助您使用 Docker 快速部署 A股量化交易系统。系统包含 Web 界面、数据采集服务和可选的 Nginx 反向代理。 ## 🔧 环境要求 - Docker >= 20.10 - Docker Compose >= 2.0 - 系统内存 >= 2GB - 磁盘空间 >= 5GB ## 🚀 快速开始 ### 1. 克隆项目 ```bash git clone 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 文件。