# Trading AI - Docker 部署指南 ## 🚀 快速开始 ### 1. 准备配置文件 复制配置模板并填写你的配置: ```bash cp config_example.py config.py # 编辑 config.py,填入你的钉钉webhook配置 ``` ### 2. 环境变量配置(可选) 创建 `.env` 文件: ```bash # 钉钉机器人配置 DINGTALK_WEBHOOK_URL=https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN DINGTALK_WEBHOOK_SECRET=SEC_YOUR_SECRET # 选币配置 USE_MARKET_CAP_RANKING=true COIN_LIMIT=50 ``` ### 3. 启动服务 ```bash # 构建并启动所有服务 docker-compose up -d # 查看服务状态 docker-compose ps # 查看日志 docker-compose logs -f ``` ## 📋 服务说明 ### 服务架构 - **coin-selector**: 选币引擎,执行技术分析和选币逻辑 - **web-dashboard**: Web仪表板,端口5000,提供可视化界面 - **scheduler**: 定时调度服务,自动执行选币任务 ### 端口映射 - Web界面: http://localhost:5000 ## 🛠️ 管理命令 ```bash # 查看运行状态 docker-compose ps # 重启服务 docker-compose restart # 停止服务 docker-compose down # 查看特定服务日志 docker-compose logs coin-selector docker-compose logs web-dashboard docker-compose logs scheduler # 进入容器调试 docker-compose exec coin-selector bash # 更新服务 docker-compose pull docker-compose up -d --build ``` ## 📁 数据持久化 - `./data/`: 数据文件目录 - `./logs/`: 日志文件目录 - `trading-db`: 数据库卷 - `config.py`: 配置文件(只读挂载) ## 🔧 配置说明 ### 环境变量优先级 1. `.env` 文件中的环境变量 2. `config.py` 文件中的配置 3. 默认值 ### 重要配置项 - `USE_MARKET_CAP_RANKING`: 是否按市值排名选币 - `COIN_LIMIT`: 分析币种数量限制 - `DINGTALK_WEBHOOK_URL`: 钉钉机器人地址 - `DINGTALK_WEBHOOK_SECRET`: 钉钉加签密钥 ## 🔍 健康检查 所有服务都配置了健康检查: - **coin-selector**: 检查数据库文件存在性 - **web-dashboard**: HTTP健康检查端点 - **scheduler**: 进程存活检查 ## 📊 监控和日志 ```bash # 实时查看所有服务日志 docker-compose logs -f # 查看特定时间范围的日志 docker-compose logs --since="2h" coin-selector # 查看系统资源使用 docker stats ``` ## 🚨 故障排除 ### 常见问题 1. **TA-Lib安装失败** ```bash # 重新构建镜像 docker-compose build --no-cache ``` 2. **数据库权限问题** ```bash # 检查数据卷权限 docker-compose exec coin-selector ls -la /app/ ``` 3. **钉钉通知失败** ```bash # 检查配置 docker-compose exec coin-selector python setup_dingtalk.py test ``` 4. **端口冲突** ```bash # 修改docker-compose.yml中的端口映射 ports: - "5001:5000" # 改为5001端口 ``` ### 调试模式 ```bash # 以调试模式启动 docker-compose -f docker-compose.yml -f docker-compose.debug.yml up # 单独测试选币功能 docker-compose run --rm coin-selector python coin_selection_engine.py ``` ## 🔄 定期维护 ```bash # 清理未使用的Docker资源 docker system prune -a # 备份数据库 docker-compose exec coin-selector cp /app/trading.db /app/data/backup_$(date +%Y%m%d).db # 清理旧日志 find ./logs -name "*.log" -mtime +7 -delete ``` ## 📈 生产环境建议 1. **资源限制**: 在docker-compose.yml中添加资源限制 2. **日志轮转**: 配置日志轮转避免磁盘空间不足 3. **监控报警**: 集成监控系统(如Prometheus) 4. **备份策略**: 定期备份数据库和配置文件 5. **安全加固**: 使用非root用户运行容器