trading.ai/DOCKER_DEPLOY.md
2025-09-18 20:54:30 +08:00

6.2 KiB
Raw Blame History

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. 访问系统

📁 项目结构

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 配置

  1. 将 SSL 证书放置在 nginx/ssl/ 目录
  2. 修改 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

🚨 故障排除

常见问题

  1. 端口被占用

    # 查找占用端口的进程
    sudo lsof -i :8080
    
    # 修改 docker-compose.yml 中的端口映射
    
  2. 权限问题

    # 修复数据目录权限
    sudo chown -R $USER:$USER data/ logs/
    
  3. 内存不足

    # 清理不使用的镜像
    docker system prune -a
    
    # 限制容器内存使用
    docker-compose up -d --memory="1g"
    
  4. 数据库锁定

    # 重启服务解决数据库锁定
    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

📞 支持

如果遇到问题,请:

  1. 查看本文档的故障排除部分
  2. 检查容器日志:docker-compose logs -f
  3. 提交 GitHub Issue 并附上相关日志

📄 许可证

本项目采用 MIT 许可证,详见 LICENSE 文件。