# 市场扫描Docker定时任务配置 ## 概述 本文档描述如何使用Docker容器定时执行`main.py market 200`命令进行股票市场扫描分析。 ## 服务组件 ### 1. 市场扫描服务 (trading-market-scanner) - **容器名称**: `trading-ai-market-scanner` - **功能**: 定时执行股票市场扫描和K线形态分析 - **扫描对象**: 同花顺热榜前N只股票 - **通知**: 支持钉钉webhook通知 ### 2. 主要文件 - `market_scanner.py` - 市场扫描脚本 - `start_market_scanner.sh` - 容器启动脚本 - `crontab/market-scanner` - 定时任务配置 - `docker-compose.yml` - Docker编排配置 ## 定时任务配置 ### 默认调度计划 ```bash # 每个工作日开盘前扫描 (09:00) - 200只股票 0 9 * * 1-5 cd /app && python market_scanner.py 200 # 每个工作日午休时间扫描 (12:30) - 100只股票 30 12 * * 1-5 cd /app && python market_scanner.py 100 # 每个工作日收盘后扫描 (15:30) - 200只股票 30 15 * * 1-5 cd /app && python market_scanner.py 200 # 每周末进行一次深度扫描 (周六 10:00) - 500只股票 0 10 * * 6 cd /app && python market_scanner.py 500 ``` ### 自定义调度 可通过修改 `crontab/market-scanner` 文件来自定义定时任务: ```bash # 格式: 分钟 小时 日 月 星期 命令 # 每15分钟扫描一次 (交易时间内) */15 9-15 * * 1-5 cd /app && python market_scanner.py 50 # 每小时扫描一次 0 * * * * cd /app && python market_scanner.py 100 ``` ## 环境变量配置 ### 必要配置 | 变量名 | 默认值 | 说明 | |--------|--------|------| | `MARKET_SCAN_STOCKS` | 200 | 扫描的股票数量 | | `LOG_LEVEL` | INFO | 日志级别 | | `MYSQL_HOST` | - | MySQL主机地址 | | `MYSQL_PORT` | 26558 | MySQL端口 | | `MYSQL_USER` | root | MySQL用户名 | | `MYSQL_PASSWORD` | - | MySQL密码 | | `MYSQL_DATABASE` | tradingai | 数据库名 | ### 可选配置 | 变量名 | 说明 | |--------|------| | `DINGTALK_WEBHOOK_URL` | 钉钉通知webhook地址 | ## 部署步骤 ### 1. 环境配置 复制并编辑环境变量文件: ```bash cp .env.example .env # 编辑 .env 文件,配置数据库连接和扫描参数 ``` ### 2. 启动服务 ```bash # 启动市场扫描服务 docker-compose up -d trading-market-scanner # 查看服务状态 docker-compose ps # 查看日志 docker-compose logs -f trading-market-scanner ``` ### 3. 验证部署 ```bash # 查看容器状态 docker ps | grep trading-ai-market-scanner # 查看定时任务配置 docker exec trading-ai-market-scanner cat /etc/cron.d/market-scanner # 查看扫描日志 docker exec trading-ai-market-scanner tail -f /app/logs/market_scanner.log ``` ## 日志管理 ### 日志文件位置 - `/app/logs/market_scanner.log` - 市场扫描日志 - `/app/logs/cron.log` - Cron执行日志 - `/app/logs/scanner_startup.log` - 服务启动日志 ### 日志轮转 - 日志文件按日轮转 - 保留30天历史日志 - 自动压缩旧日志文件 ## 监控和运维 ### 健康检查 服务包含自动重启机制,如果进程异常退出会自动重启。 ### 手动执行扫描 ```bash # 进入容器手动执行扫描 docker exec -it trading-ai-market-scanner python market_scanner.py 100 # 查看扫描结果 docker exec trading-ai-market-scanner tail -20 /app/logs/market_scanner.log ``` ### 修改定时任务 1. 编辑 `crontab/market-scanner` 文件 2. 重启容器使配置生效: ```bash docker-compose restart trading-market-scanner ``` ### 调试模式 设置更详细的日志级别: ```bash # 在 .env 文件中设置 LOG_LEVEL=DEBUG # 重启服务 docker-compose restart trading-market-scanner ``` ## 注意事项 1. **时区设置**: 容器使用 Asia/Shanghai 时区 2. **资源消耗**: 扫描大量股票会消耗较多CPU和内存 3. **网络依赖**: 需要稳定的网络连接访问股票数据API 4. **数据库连接**: 确保MySQL数据库可正常连接 5. **存储空间**: 定期清理日志文件避免磁盘空间不足 ## 故障排除 ### 常见问题 1. **容器启动失败** ```bash # 查看启动日志 docker-compose logs trading-market-scanner ``` 2. **定时任务不执行** ```bash # 检查cron服务状态 docker exec trading-ai-market-scanner service cron status # 查看cron日志 docker exec trading-ai-market-scanner tail -f /app/logs/cron.log ``` 3. **数据库连接失败** ```bash # 检查环境变量配置 docker exec trading-ai-market-scanner env | grep MYSQL ``` 4. **内存不足** ```bash # 减少扫描股票数量 MARKET_SCAN_STOCKS=50 ``` ### 性能优化 1. 根据服务器性能调整扫描频率和股票数量 2. 设置合理的日志级别避免过多日志输出 3. 定期清理历史数据和日志文件 4. 监控服务器资源使用情况