trading.ai/DOCKER_DEPLOYMENT.md
2025-08-14 10:06:19 +08:00

3.5 KiB
Raw Blame History

Trading AI - Docker 部署指南

🚀 快速开始

1. 准备配置文件

复制配置模板并填写你的配置:

cp config_example.py config.py
# 编辑 config.py填入你的钉钉webhook配置

2. 环境变量配置(可选)

创建 .env 文件:

# 钉钉机器人配置
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. 启动服务

# 构建并启动所有服务
docker-compose up -d

# 查看服务状态
docker-compose ps

# 查看日志
docker-compose logs -f

📋 服务说明

服务架构

  • coin-selector: 选币引擎,执行技术分析和选币逻辑
  • web-dashboard: Web仪表板端口5000提供可视化界面
  • scheduler: 定时调度服务,自动执行选币任务

端口映射

🛠️ 管理命令

# 查看运行状态
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: 进程存活检查

📊 监控和日志

# 实时查看所有服务日志
docker-compose logs -f

# 查看特定时间范围的日志
docker-compose logs --since="2h" coin-selector

# 查看系统资源使用
docker stats

🚨 故障排除

常见问题

  1. TA-Lib安装失败

    # 重新构建镜像
    docker-compose build --no-cache
    
  2. 数据库权限问题

    # 检查数据卷权限
    docker-compose exec coin-selector ls -la /app/
    
  3. 钉钉通知失败

    # 检查配置
    docker-compose exec coin-selector python setup_dingtalk.py test
    
  4. 端口冲突

    # 修改docker-compose.yml中的端口映射
    ports:
      - "5001:5000"  # 改为5001端口
    

调试模式

# 以调试模式启动
docker-compose -f docker-compose.yml -f docker-compose.debug.yml up

# 单独测试选币功能
docker-compose run --rm coin-selector python coin_selection_engine.py

🔄 定期维护

# 清理未使用的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用户运行容器