xianyu-auto-reply/Docker部署说明.md
2025-07-25 17:24:29 +08:00

8.2 KiB
Raw Blame History

🐳 Docker 部署说明

📋 部署概述

本项目支持完整的Docker容器化部署包含所有必要的依赖和配置。支持单容器部署和多容器编排部署。

🆕 多用户系统支持

系统现已支持多用户功能:

  • 用户注册: 支持邮箱验证码注册
  • 图形验证码: 防止自动化注册
  • 数据隔离: 每个用户的数据完全独立
  • 权限管理: 严格的用户权限控制
  • 安全认证: JWT Token + 图形验证码双重保护

新增依赖

  • Pillow: 用于生成图形验证码
  • 系统字体: 支持验证码文字渲染

🚀 快速开始

方式一:使用 Docker Compose推荐

  1. 克隆项目

    git clone <repository-url>
    cd xianyuapis
    
  2. 配置环境变量

    # 复制环境变量模板
    cp .env.example .env
    
    # 编辑配置文件(可选)
    nano .env
    
  3. 启动服务

    # 启动基础服务
    docker-compose up -d
    
    # 或者启动包含Nginx的完整服务
    docker-compose --profile with-nginx up -d
    
  4. 访问系统

方式二:使用 Docker 命令

  1. 构建镜像

    docker build -t xianyu-auto-reply:latest .
    
  2. 运行容器

    docker run -d \
      --name xianyu-auto-reply \
      -p 8080:8080 \
      -v $(pwd)/data:/app/data \
      -v $(pwd)/logs:/app/logs \
      -v $(pwd)/global_config.yml:/app/global_config.yml:ro \
      -e ADMIN_USERNAME=admin \
      -e ADMIN_PASSWORD=admin123 \
      xianyu-auto-reply:latest
    

📦 依赖说明

新增依赖

  • python-multipart>=0.0.6 - 文件上传支持(商品管理功能需要)

完整依赖列表

# Web框架和API相关
fastapi>=0.111
uvicorn[standard]>=0.29
pydantic>=2.7
python-multipart>=0.0.6

# 日志记录
loguru>=0.7

# 网络通信
websockets>=10.0,<13.0
aiohttp>=3.9

# 配置文件处理
PyYAML>=6.0

# JavaScript执行引擎
PyExecJS>=1.5.1

# 协议缓冲区解析
blackboxprotobuf>=1.0.1

# 系统监控
psutil>=5.9.0

# HTTP客户端用于测试
requests>=2.31.0

🔧 配置说明

环境变量配置

基础配置

# 时区设置
TZ=Asia/Shanghai

# 服务端口
WEB_PORT=8080

# 管理员账号(建议修改)
ADMIN_USERNAME=admin
ADMIN_PASSWORD=admin123

# JWT密钥建议修改
JWT_SECRET_KEY=your-secret-key-here

多用户系统配置

# 多用户功能开关
MULTIUSER_ENABLED=true

# 用户注册开关
USER_REGISTRATION_ENABLED=true

# 邮箱验证开关
EMAIL_VERIFICATION_ENABLED=true

# 图形验证码开关
CAPTCHA_ENABLED=true

# Token过期时间默认24小时
TOKEN_EXPIRE_TIME=86400

功能配置

# 自动回复
AUTO_REPLY_ENABLED=true

# 自动发货
AUTO_DELIVERY_ENABLED=true
AUTO_DELIVERY_TIMEOUT=30

# 商品管理(新功能)
ENABLE_ITEM_MANAGEMENT=true

数据持久化

重要目录

  • /app/data - 数据库文件
  • /app/logs - 日志文件
  • /app/backups - 备份文件

挂载配置

volumes:
  - ./data:/app/data:rw          # 数据库持久化
  - ./logs:/app/logs:rw          # 日志持久化
  - ./backups:/app/backups:rw    # 备份持久化
  - ./global_config.yml:/app/global_config.yml:ro  # 配置文件

🏗️ 架构说明

容器架构

┌─────────────────────────────────────┐
│           Nginx (可选)              │
│         反向代理 + SSL              │
└─────────────┬───────────────────────┘
              │
┌─────────────▼───────────────────────┐
│        Xianyu App Container         │
│  ┌─────────────────────────────────┐ │
│  │        FastAPI Server          │ │
│  │         (Port 8080)            │ │
│  └─────────────────────────────────┘ │
│  ┌─────────────────────────────────┐ │
│  │      XianyuAutoAsync           │ │
│  │     (WebSocket Client)         │ │
│  └─────────────────────────────────┘ │
│  ┌─────────────────────────────────┐ │
│  │       SQLite Database          │ │
│  │      (商品信息 + 配置)          │ │
│  └─────────────────────────────────┘ │
└─────────────────────────────────────┘

新功能支持

  • 商品信息管理
  • 商品详情编辑
  • 文件上传功能
  • 消息通知格式化

🔍 健康检查

内置健康检查

# 检查容器状态
docker ps

# 查看健康状态
docker inspect xianyu-auto-reply | grep Health -A 10

# 手动健康检查
curl -f http://localhost:8080/health

健康检查端点

  • GET /health - 基础健康检查
  • GET /api/status - 详细状态信息

📊 监控和日志

日志查看

# 查看容器日志
docker logs xianyu-auto-reply

# 实时查看日志
docker logs -f xianyu-auto-reply

# 查看应用日志文件
docker exec xianyu-auto-reply tail -f /app/logs/xianyu_$(date +%Y%m%d).log

性能监控

# 查看资源使用
docker stats xianyu-auto-reply

# 进入容器
docker exec -it xianyu-auto-reply bash

# 查看进程状态
docker exec xianyu-auto-reply ps aux

🔒 安全配置

生产环境建议

  1. 修改默认密码

    ADMIN_USERNAME=your-admin
    ADMIN_PASSWORD=your-strong-password
    
  2. 使用强JWT密钥

    JWT_SECRET_KEY=$(openssl rand -base64 32)
    
  3. 启用HTTPS

    # 使用Nginx配置SSL
    docker-compose --profile with-nginx up -d
    
  4. 限制网络访问

    # 仅允许本地访问
    ports:
      - "127.0.0.1:8080:8080"
    

🚨 故障排除

常见问题

  1. 容器启动失败

    # 查看详细错误
    docker logs xianyu-auto-reply
    
    # 检查端口占用
    netstat -tlnp | grep 8080
    
  2. 数据库初始化失败

    # 数据库会在应用启动时自动初始化
    # 如果需要重新初始化,可以删除数据库文件后重启容器
    docker exec xianyu-auto-reply rm -f /app/data/xianyu_data.db
    docker restart xianyu-auto-reply
    
  3. 权限问题

    # 修复目录权限
    sudo chown -R 1000:1000 ./data ./logs ./backups
    
  4. 依赖安装失败

    # 重新构建镜像
    docker-compose build --no-cache
    

调试模式

# 启用调试模式
docker-compose -f docker-compose.yml -f docker-compose.debug.yml up -d

# 或设置环境变量
docker run -e DEBUG=true -e LOG_LEVEL=DEBUG ...

🔄 更新部署

更新步骤

  1. 停止服务

    docker-compose down
    
  2. 拉取最新代码

    git pull origin main
    
  3. 重新构建

    docker-compose build --no-cache
    
  4. 启动服务

    docker-compose up -d
    

数据备份

# 备份数据库
docker exec xianyu-auto-reply cp /app/data/xianyu_data.db /app/backups/

# 备份配置
cp .env .env.backup
cp global_config.yml global_config.yml.backup

📈 性能优化

资源限制

deploy:
  resources:
    limits:
      memory: 512M      # 内存限制
      cpus: '0.5'       # CPU限制
    reservations:
      memory: 256M      # 内存预留
      cpus: '0.25'      # CPU预留

优化建议

  1. 调整内存限制:根据实际使用情况调整
  2. 使用SSD存储:提高数据库性能
  3. 配置日志轮转:避免日志文件过大
  4. 定期清理:清理旧的备份文件

🎉 Docker部署配置完善支持所有新功能