一个基于 FastAPI 和 Celery 的 ComfyUI 分布式 Web 服务系统,支持多种 AI 内容生成任务的统一管理和调度。
- 🚀 快速开始 - Docker 一键部署 / 传统部署
- 🌟 核心特性 - 系统主要功能和优势
- 🏗️ 系统架构 - 分布式架构设计
- 🗄️ 数据库管理 - 三分离架构和迁移系统
- 🐳 Docker 部署 - 容器化部署指南
- ⚙️ 配置说明 - 系统配置和工作流管理
- 🌐 访问服务 - 服务地址和功能介绍
- 📁 项目结构 - 完整的目录结构说明
- 🔧 高级功能 - 数据库迁移、Docker管理等
- 🚨 故障排除 - 常见问题和解决方案
- 文生图 (Text-to-Image): 支持 SD 1.5、SDXL 等多种模型
- 图生视频 (Image-to-Video): SVD 模型支持,高质量视频生成
- 工作流扩展: 支持自定义 ComfyUI 工作流集成
- 主从架构: 一台主机调度器 + 多台 ComfyUI 工作节点
- 智能负载均衡: 轮询、最少负载、加权、随机等多种策略
- 故障转移: 自动检测节点故障,任务重新分配
- 节点管理: 动态节点注册、健康检查、状态监控
- Vue.js 客户端: 响应式设计,支持移动端访问
- Vue.js 管理后台: 完整的系统管理和监控界面
- 实时更新: WebSocket 实时任务进度和状态推送
- 局域网访问: 支持多设备同时访问
- 三数据库分离: 客户端、管理端、共享数据独立存储
- 版本化迁移: 完整的数据库迁移系统,支持版本控制
- 数据持久化: 任务记录、用户数据、系统配置持久化存储
- 备份恢复: 自动化数据备份和恢复机制
- JWT 认证: 基于 Token 的安全认证机制
- 用户管理: 客户端用户注册、登录、会话管理
- 权限控制: 基于角色的访问控制 (RBAC)
- API 安全: 完整的 API 认证和授权体系
- Docker 支持: 完整的容器化解决方案
- 一键部署: 自动化部署脚本,支持开发和生产环境
- 服务编排: Docker Compose 多服务协调
- 监控集成: 可选的 Prometheus + Grafana 监控栈
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Vue.js Client │ │ Vue.js Admin │ │ Mobile App │
│ (响应式前端) │ │ (管理后台) │ │ (未来支持) │
└─────────┬───────┘ └─────────┬───────┘ └─────────┬───────┘
│ │ │
└──────────────────────┼──────────────────────┘
│ RESTful API + WebSocket
┌─────────────────────────────────────────────────────────────┐
│ 主机调度器 (Master Node) │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ API Gateway │ │ Task Scheduler │ │ Node Manager │ │
│ │ (FastAPI) │ │ (Celery) │ │ (Registry) │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Load Balancer │ │ Health Monitor │ │ Config Manager │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Database Layer │ │ File Manager │ │ Auth Service │ │
│ │ (三分离架构) │ │ (分布式存储) │ │ (JWT认证) │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│ HTTP/WebSocket
┌───────────┼───────────┐
│ │ │
┌───────▼───┐ ┌─────▼─────┐ ┌───▼───────┐
│ComfyUI-1 │ │ComfyUI-2 │ │ComfyUI-N │
│(Worker) │ │(Worker) │ │(Worker) │
│GPU节点 │ │GPU节点 │ │GPU节点 │
└───────────┘ └───────────┘ └───────────┘
- Vue.js 客户端: 现代化响应式界面,支持实时任务监控
- Vue.js 管理后台: 完整的系统管理和监控界面
- 移动端适配: 响应式设计,支持移动设备访问
- FastAPI 服务: 高性能异步 API 框架
- 认证授权: JWT Token 认证,基于角色的权限控制
- 请求路由: 智能请求分发和负载均衡
- WebSocket 支持: 实时任务状态推送
- Celery 分布式队列: 异步任务处理和调度
- Redis 消息代理: 高性能任务队列和缓存
- 任务优先级: 支持任务优先级和批量处理
- 故障恢复: 任务失败重试和错误处理
- 动态节点发现: 自动检测和注册 ComfyUI 节点
- 健康监控: 实时节点状态检查和性能监控
- 负载均衡: 多种负载均衡策略,智能任务分发
- 故障转移: 自动故障检测和任务重新分配
- MySQL 三分离: 客户端、管理端、共享数据独立存储
- Redis 缓存: 高性能数据缓存和会话存储
- 文件管理: 分布式文件存储和同步机制
- 数据迁移: 版本化数据库结构管理
- ComfyUI 实例: 独立的 AI 内容生成工作节点
- GPU 资源: 专用 GPU 计算资源
- 模型管理: 本地模型存储和版本管理
- 结果输出: 生成内容的本地存储和传输
- CPU: 4核心+ (推荐 8核心)
- 内存: 8GB+ RAM (推荐 16GB+)
- 存储: 100GB+ 可用空间
- 网络: 千兆网络连接
- GPU: NVIDIA GPU 8GB+ VRAM (推荐 RTX 3080/4080+)
- CPU: 4核心+
- 内存: 16GB+ RAM (推荐 32GB+)
- 存储: 200GB+ 可用空间 (用于模型和输出文件)
- 网络: 千兆网络连接
- 操作系统: Linux/Windows/macOS
- Python: 3.10+ (推荐 3.11)
- Docker: 20.10+ (推荐容器化部署)
- Docker Compose: 2.0+
- MySQL: 8.0+
- Redis: 6.0+
- 操作系统: Linux/Windows (推荐 Linux)
- Python: 3.10+
- ComfyUI: 最新版本
- CUDA: 11.8+ (NVIDIA GPU)
- PyTorch: 2.0+ (GPU 版本)
- 局域网: 所有节点需在同一局域网或可互相访问
- 端口开放:
- 主机: 8000 (API), 8001 (客户端), 8002 (管理后台)
- 工作节点: 8188 (ComfyUI 默认端口)
- 带宽: 建议千兆网络,支持大文件传输
# 克隆项目
git clone <repository-url>
cd ComfyUI-Web-Service
# 确保 Docker 和 Docker Compose 已安装
docker --version
docker compose versioncd docker/
cp .env .env.local
# 编辑环境配置文件
nano .env.local重要配置项:
# 数据库密码(请修改为强密码)
MYSQL_ROOT_PASSWORD=your_secure_password
# ComfyUI 节点地址(修改为实际地址)
COMFYUI_NODE_HOST=192.168.1.100
COMFYUI_NODE_PORT=8188
# JWT 密钥(生产环境必须修改)
JWT_SECRET_KEY=your-super-secret-jwt-key# Linux/macOS 用户
chmod +x deploy.sh
./deploy.sh build
./deploy.sh start -d
# Windows 用户(Git Bash/WSL)
bash deploy.sh build
bash deploy.sh start -d
# 查看服务状态
./deploy.sh status# 查看服务日志
./deploy.sh logs
# 检查健康状态
curl http://localhost:8000/health- 客户端界面: http://localhost:5174
- 管理后台: http://localhost:5173
- API 文档: http://localhost:8000/docs
- 健康检查: http://localhost:8000/health
# 克隆项目
git clone <repository-url>
cd ComfyUI-Web-Service
# 创建虚拟环境
python -m venv .venv
# 激活虚拟环境
# Windows
.venv\Scripts\activate
# Linux/macOS
source .venv/bin/activate
# 升级 pip 并安装依赖
pip install --upgrade pip
pip install -r requirements.txt# 安装并启动 MySQL 8.0+
# 安装并启动 Redis 6.0+
# 配置数据库连接
cp backend/config.yaml backend/config.yaml.backup
nano backend/config.yaml配置数据库连接:
mysql:
client:
host: localhost
port: 3306
user: root
password: "your_password"
database: comfyui_client
admin:
host: localhost
port: 3306
user: root
password: "your_password"
database: comfyui_admin
shared:
host: localhost
port: 3306
user: root
password: "your_password"
database: comfyui_shared# 使用数据库管理工具初始化
python database/tools/db_manager.py init
# 验证数据库状态
python database/tools/db_manager.py status# 在 backend/config.yaml 中配置节点
nodes:
static_nodes:
- node_id: "comfyui-worker-1"
host: "192.168.1.100" # ComfyUI 服务器IP
port: 8188
max_concurrent: 4
capabilities: ["text_to_image", "image_to_video"]# 终端1: 启动 Redis
redis-server
# 终端2: 启动 Celery Worker
cd backend
celery -A app.queue.celery_app worker --loglevel=info --concurrency=4
# 终端3: 启动 FastAPI 主服务
cd backend
uvicorn app.main_v2:app --host 0.0.0.0 --port 8000 --reload
# 终端4: 启动客户端服务
cd scripts
python start_client.py
# 终端5: 启动管理后台服务
cd scripts
python start_admin.py# 检查服务状态
curl http://localhost:8000/health
curl http://localhost:5174/
curl http://localhost:5173/项目采用企业级三数据库分离架构,实现数据隔离和安全管理:
- 用途: 存储客户端用户数据和基础任务信息
- 访问者: Vue.js 客户端界面
- 主要表: 用户信息、任务记录、上传文件、访问日志
- 特点: 面向用户的高频读写操作
- 用途: 存储系统管理、配置和监控数据
- 访问者: Vue.js 管理后台
- 主要表: 管理员账户、工作流模板、模型管理、系统配置
- 特点: 管理员专用,权限控制严格
- 用途: 存储需要跨系统访问的核心数据
- 访问者: 客户端和管理端都可访问
- 主要表: 全局任务、节点分配、文件管理、系统统计
- 特点: 分布式系统的数据中心
# 初始化数据库(新环境部署)
python database/tools/db_manager.py init
# 查看数据库状态
python database/tools/db_manager.py status
# 查看迁移状态
python database/tools/db_manager.py migration-status
# 执行迁移
python database/tools/db_manager.py migrate
# 创建新迁移
python database/tools/create_migration.py create add_new_field --database client --description "添加新字段"
# 列出所有迁移
python database/tools/create_migration.py listdatabase/
├── README.md # 数据库使用说明
├── setup_databases.sql # 数据库初始化脚本
├── schema/ # 数据库结构文件
│ ├── README.md # 结构文件说明
│ ├── client_database.sql # 客户端数据库结构
│ ├── admin_database.sql # 管理后台数据库结构
│ └── shared_database.sql # 共享数据库结构
├── migrations/ # 数据库迁移文件
│ ├── README.md # 迁移系统说明
│ ├── client/ # 客户端数据库迁移
│ ├── admin/ # 管理后台数据库迁移
│ └── shared/ # 共享数据库迁移
└── tools/ # 数据库管理工具
├── db_manager.py # 主要数据库管理工具
├── migration_manager.py # 迁移管理器
└── create_migration.py # 创建迁移文件工具
- 连接加密: 支持 SSL/TLS 连接
- 权限分离: 不同数据库使用不同用户权限
- 审计日志: 完整的数据库操作日志
- 备份恢复: 自动化备份和恢复机制
- 索引优化: 针对查询模式优化的索引设计
- 连接池: 数据库连接池管理
- 查询缓存: Redis 缓存热点数据
- 分区表: 大表分区提升查询性能
项目提供企业级 Docker 容器化部署方案,支持开发和生产环境:
docker/
├── Dockerfile # 主应用镜像构建文件
├── docker-compose.yml # 开发环境配置
├── docker-compose.prod.yml # 生产环境配置
├── deploy.sh # 智能部署管理脚本
├── start.sh # 容器启动脚本
├── wait-for-it.sh # 服务依赖等待脚本
├── .env # 环境变量模板
├── logging.yaml # 日志配置
├── mysql/ # MySQL 配置
│ └── my.cnf # MySQL 优化配置
├── redis/ # Redis 配置
│ └── redis.conf # Redis 优化配置
└── nginx/ # Nginx 配置
├── nginx.conf # 开发环境配置
└── nginx.prod.conf # 生产环境配置
cd docker/
# 构建镜像
./deploy.sh build
# 启动服务(前台运行,查看日志)
./deploy.sh start
# 启动服务(后台运行)
./deploy.sh start -d
# 查看服务状态
./deploy.sh status
# 查看实时日志
./deploy.sh logs
# 查看特定服务日志
./deploy.sh logs comfyui-web# 使用生产环境配置
./deploy.sh -p build
./deploy.sh -p start -d
# 生产环境状态监控
./deploy.sh -p status
./deploy.sh -p logs# 运行数据库迁移
./deploy.sh migrate
# 查看数据库状态
./deploy.sh db-status
# 备份数据
./deploy.sh backup /path/to/backup
# 恢复数据
./deploy.sh restore /path/to/backup# 停止服务
./deploy.sh stop
# 重启服务
./deploy.sh restart
# 更新服务
./deploy.sh update
# 清理资源
./deploy.sh clean- FastAPI 主服务: http://localhost:8000
- 客户端界面: http://localhost:7194
- 管理后台: http://localhost:7193
- API 文档: http://localhost:8000/docs
- 健康检查: http://localhost:8000/health
- MySQL: localhost:3306
- Redis: localhost:6379
- Nginx: localhost:80/443 (生产环境)
- Prometheus: localhost:9090 (监控)
# 数据库配置
MYSQL_ROOT_PASSWORD=your_secure_password
MYSQL_PORT=3306
# Redis 配置
REDIS_PORT=6379
REDIS_PASSWORD=your_redis_password # 生产环境
# 应用端口
FASTAPI_PORT=8000
CLIENT_PORT=8001
ADMIN_PORT=8002
# ComfyUI 节点
COMFYUI_NODE_HOST=192.168.1.100
COMFYUI_NODE_PORT=8188
# 安全配置
JWT_SECRET_KEY=your-super-secret-jwt-key
ADMIN_DEFAULT_PASSWORD=admin123456
# 资源限制
APP_MEMORY_LIMIT=4G
APP_CPU_LIMIT=2.0- comfyui-web: 主应用容器(FastAPI + Celery + 前端服务)
- mysql: MySQL 8.0 数据库容器
- redis: Redis 7 缓存容器
- nginx: Nginx 反向代理容器(可选)
- mysql_data: MySQL 数据持久化
- redis_data: Redis 数据持久化
- comfyui_logs: 应用日志持久化
- comfyui_temp: 临时文件存储
# MySQL 三分离数据库配置
mysql:
client:
host: localhost
port: 3306
user: root
password: "your_secure_password"
database: comfyui_client
charset: utf8mb4
pool_size: 10
max_overflow: 20
admin:
host: localhost
port: 3306
user: root
password: "your_secure_password"
database: comfyui_admin
charset: utf8mb4
pool_size: 5
max_overflow: 10
shared:
host: localhost
port: 3306
user: root
password: "your_secure_password"
database: comfyui_shared
charset: utf8mb4
pool_size: 15
max_overflow: 30
# Redis 缓存配置
redis:
host: localhost
port: 6379
db: 0
password: "" # 生产环境建议设置密码
max_connections: 50
socket_timeout: 5# 分布式配置
distributed:
enabled: true # 启用分布式模式
# 节点发现和管理
nodes:
discovery_mode: "static" # static | dynamic | hybrid
# 静态节点配置
static_nodes:
- node_id: "comfyui-worker-1"
host: "192.168.1.101"
port: 8188
max_concurrent: 4
capabilities: ["text_to_image", "image_to_video"]
weight: 1.0
tags: ["gpu", "rtx4090"]
- node_id: "comfyui-worker-2"
host: "192.168.1.102"
port: 8188
max_concurrent: 2
capabilities: ["text_to_image"]
weight: 0.5
tags: ["gpu", "rtx3080"]
# 健康检查配置
health_check:
interval: 30 # 检查间隔(秒)
timeout: 5 # 超时时间(秒)
retry_attempts: 3 # 重试次数
heartbeat_timeout: 60 # 心跳超时(秒)
# 负载均衡配置
load_balancing:
strategy: "least_loaded" # round_robin | least_loaded | weighted | random
enable_failover: true # 启用故障转移
failover_threshold: 3 # 故障转移阈值# 任务类型和工作流配置
task_types:
text_to_image:
workflows:
sd_basic:
workflow_file: "workflows/text_to_image/文生图.json"
parameter_mapping:
prompt:
node_id: "314"
input_name: "text"
default_value: ""
negative_prompt:
node_id: "315"
input_name: "text"
default_value: ""
width:
node_id: "135"
input_name: "width"
default_value: 512
height:
node_id: "135"
input_name: "height"
default_value: 512
batch_size:
node_id: "135"
input_name: "batch_size"
default_value: 1
sdxl_basic:
workflow_file: "workflows/text_to_image/SDXL文生图.json"
parameter_mapping:
prompt:
node_id: "6"
input_name: "text"
default_value: ""
width:
node_id: "5"
input_name: "width"
default_value: 1024
height:
node_id: "5"
input_name: "height"
default_value: 1024
image_to_video:
workflows:
svd_basic:
workflow_file: "workflows/image_to_video/图生视频.json"
parameter_mapping:
image_path:
node_id: "1"
input_name: "image"
default_value: ""
duration:
node_id: "2"
input_name: "frames"
default_value: 25
fps:
node_id: "3"
input_name: "fps"
default_value: 8# 服务器配置
server:
host: "0.0.0.0"
port: 8000
debug: false
workers: 4
# 安全配置
security:
jwt_secret_key: "your-super-secret-jwt-key"
jwt_algorithm: "HS256"
jwt_expire_hours: 24
cors_origins: ["*"] # 生产环境请限制具体域名
# 文件管理配置
file_management:
upload_dir: "uploads"
output_dir: "outputs"
max_file_size: "100MB"
allowed_extensions: [".png", ".jpg", ".jpeg", ".gif", ".mp4"]
cleanup_interval: 3600 # 清理间隔(秒)
# 日志配置
logging:
level: "INFO"
format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
file: "logs/app.log"
max_size: "10MB"
backup_count: 5-
🎨 客户端界面: http://localhost:8001
- Vue.js 响应式界面,支持移动端
- 任务提交、进度监控、结果查看
- 用户注册、登录、个人中心
-
🛠️ 管理后台: http://localhost:8002
- Vue.js 管理界面,功能完整
- 系统监控、节点管理、用户管理
- 工作流配置、模型管理
-
📚 API 文档: http://localhost:8000/docs
- Swagger UI 交互式文档
- 完整的 API 接口说明
- 在线测试功能
-
💓 健康检查: http://localhost:8000/health
- 系统健康状态监控
- 服务可用性检查
- 依赖服务状态
- 🗄️ MySQL: localhost:3306
- ⚡ Redis: localhost:6379
- 文生图: 支持 SD 1.5、SDXL 模型
- 图生视频: SVD 模型视频生成
- 批量生成: 支持批量任务提交
- 实时预览: WebSocket 实时进度更新
- 用户注册: 简单的用户注册流程
- 会话管理: 安全的登录会话控制
- 任务历史: 完整的任务历史记录
- 文件管理: 上传文件和生成结果管理
- 响应式设计: 支持桌面和移动设备
- 暗色主题: 现代化的界面设计
- 实时更新: 任务状态实时推送
- 图片预览: 高质量图片预览和下载
- 仪表板: 系统概览和实时统计
- 性能监控: CPU、内存、GPU 使用率
- 任务统计: 任务成功率、处理时间统计
- 错误监控: 系统错误和异常监控
- 节点状态: 实时节点状态监控
- 负载均衡: 负载均衡策略配置
- 健康检查: 节点健康检查配置
- 故障转移: 自动故障转移设置
- 任务队列: 实时任务队列监控
- 任务历史: 完整的任务执行历史
- 任务重试: 失败任务重新执行
- 任务优先级: 任务优先级管理
- 用户列表: 客户端用户管理
- 权限控制: 用户权限和配额管理
- 访问日志: 用户访问日志查看
- 会话管理: 用户会话状态管理
- 工作流管理: 工作流模板配置
- 模型管理: AI 模型版本管理
- 参数配置: 系统参数动态配置
- 备份恢复: 数据备份和恢复管理
- 迁移状态: 数据库迁移状态查看
- 数据统计: 数据库表统计信息
- 连接监控: 数据库连接状态监控
- 性能分析: 数据库查询性能分析
# 用户注册
POST /api/v2/auth/register
{
"username": "test_user",
"password": "secure_password",
"nickname": "测试用户"
}
# 用户登录
POST /api/v2/auth/login
{
"username": "test_user",
"password": "secure_password"
}# 管理员登录
POST /admin/auth/login
{
"username": "admin",
"password": "admin123456"
}# 使用 JWT Token 访问 API
curl -H "Authorization: Bearer <your_jwt_token>" \
http://localhost:8000/api/v2/tasks/ComfyUI-Web-Service/
├── README.md # 项目主文档
├── requirements.txt # Python 依赖包
├── LICENSE # 开源许可证
├── .gitignore # Git 忽略文件
│
├── backend/ # 🚀 后端应用
│ ├── config.yaml # 主配置文件
│ ├── main_v2.py # FastAPI 应用入口
│ ├── app/ # 应用核心代码
│ │ ├── __init__.py
│ │ ├── admin_api/ # 管理后台 API
│ │ │ ├── __init__.py
│ │ │ ├── routes.py # 管理后台路由
│ │ │ └── schemas.py # 管理后台数据模型
│ │ ├── api/ # 客户端 API
│ │ │ ├── __init__.py
│ │ │ ├── routes.py # 客户端路由
│ │ │ └── schemas.py # 客户端数据模型
│ │ ├── auth/ # 认证授权
│ │ │ ├── __init__.py
│ │ │ ├── jwt_handler.py # JWT 处理
│ │ │ └── dependencies.py # 认证依赖
│ │ ├── core/ # 核心业务逻辑
│ │ │ ├── __init__.py
│ │ │ ├── config.py # 配置管理
│ │ │ ├── node_manager.py # 节点管理
│ │ │ ├── load_balancer.py # 负载均衡
│ │ │ └── task_manager.py # 任务管理
│ │ ├── database/ # 数据库层
│ │ │ ├── __init__.py
│ │ │ ├── connection.py # 数据库连接
│ │ │ ├── models/ # ORM 模型
│ │ │ │ ├── __init__.py
│ │ │ │ ├── base.py # 基础模型
│ │ │ │ ├── client_models.py # 客户端模型
│ │ │ │ ├── admin_models.py # 管理端模型
│ │ │ │ └── shared_models.py # 共享模型
│ │ │ └── repositories/ # 数据访问层
│ │ ├── processors/ # 任务处理器
│ │ │ ├── __init__.py
│ │ │ ├── text_to_image.py # 文生图处理器
│ │ │ ├── image_to_video.py # 图生视频处理器
│ │ │ └── workflow_processor.py # 工作流处理器
│ │ ├── queue/ # 任务队列
│ │ │ ├── __init__.py
│ │ │ ├── celery_app.py # Celery 应用
│ │ │ └── tasks.py # 异步任务
│ │ ├── services/ # 业务服务层
│ │ │ ├── __init__.py
│ │ │ ├── task_service.py # 任务服务
│ │ │ ├── user_service.py # 用户服务
│ │ │ └── file_service.py # 文件服务
│ │ └── utils/ # 工具函数
│ │ ├── __init__.py
│ │ ├── logger.py # 日志工具
│ │ ├── validators.py # 验证工具
│ │ └── helpers.py # 辅助函数
│ ├── outputs/ # 生成文件输出目录
│ ├── uploads/ # 用户上传文件目录
│ ├── workflows/ # ComfyUI 工作流文件
│ │ ├── text_to_image/ # 文生图工作流
│ │ └── image_to_video/ # 图生视频工作流
│ └── logs/ # 应用日志目录
│
├── frontend/ # 💻 前端应用
│ ├── client/ # Vue.js 客户端
│ │ ├── public/ # 静态资源
│ │ ├── src/ # 源代码
│ │ │ ├── components/ # Vue 组件
│ │ │ ├── views/ # 页面视图
│ │ │ ├── store/ # Pinia 状态管理
│ │ │ ├── router/ # Vue Router
│ │ │ ├── utils/ # 工具函数
│ │ │ ├── styles/ # 样式文件
│ │ │ └── main.js # 应用入口
│ │ ├── package.json # 依赖配置
│ │ └── vite.config.js # Vite 配置
│ └── admin/ # Vue.js 管理后台
│ ├── public/ # 静态资源
│ ├── src/ # 源代码
│ │ ├── components/ # Vue 组件
│ │ ├── views/ # 页面视图
│ │ ├── store/ # 状态管理
│ │ └── main.js # 应用入口
│ └── package.json # 依赖配置
│
├── database/ # 🗄️ 数据库管理
│ ├── README.md # 数据库使用说明
│ ├── setup_databases.sql # 数据库初始化脚本
│ ├── schema/ # 数据库结构文件
│ │ ├── README.md # 结构文件说明
│ │ ├── client_database.sql # 客户端数据库结构
│ │ ├── admin_database.sql # 管理后台数据库结构
│ │ └── shared_database.sql # 共享数据库结构
│ ├── migrations/ # 数据库迁移文件
│ │ ├── README.md # 迁移系统说明
│ │ ├── client/ # 客户端数据库迁移
│ │ ├── admin/ # 管理后台数据库迁移
│ │ └── shared/ # 共享数据库迁移
│ └── tools/ # 数据库管理工具
│ ├── db_manager.py # 主要数据库管理工具
│ ├── migration_manager.py # 迁移管理器
│ └── create_migration.py # 创建迁移文件工具
│
├── docker/ # 🐳 Docker 容器化配置
│ ├── Dockerfile # 主应用镜像构建文件
│ ├── docker-compose.yml # 开发环境配置
│ ├── docker-compose.prod.yml # 生产环境配置
│ ├── deploy.sh # 智能部署管理脚本
│ ├── start.sh # 容器启动脚本
│ ├── wait-for-it.sh # 服务依赖等待脚本
│ ├── .env # 环境变量模板
│ ├── logging.yaml # 日志配置
│ ├── mysql/ # MySQL 配置
│ │ └── my.cnf # MySQL 优化配置
│ ├── redis/ # Redis 配置
│ │ └── redis.conf # Redis 优化配置
│ ├── nginx/ # Nginx 配置
│ │ ├── nginx.conf # 开发环境配置
│ │ └── nginx.prod.conf # 生产环境配置
│ └── monitoring/ # 监控配置 (可选)
│ └── prometheus.yml # Prometheus 配置
│
├── scripts/ # 🔧 启动脚本
│ ├── start_client.py # 客户端服务启动
│ ├── start_admin.py # 管理后台服务启动
│ └── start_all.bat # Windows 一键启动脚本
│
└── docs/ # 📚 项目文档
├── Docker容器化部署指南.md # Docker 部署指南
├── 项目结构说明.md # 项目结构详细说明
├── 项目更新说明.md # 项目更新日志
└── API接口文档.md # API 接口文档
- API 层: 提供 RESTful API 接口,支持客户端和管理后台
- 认证层: JWT 认证,用户会话管理,权限控制
- 业务层: 核心业务逻辑,任务管理,节点管理,负载均衡
- 数据层: ORM 模型,数据库连接,数据访问层
- 队列层: Celery 异步任务处理,分布式任务调度
- 客户端: Vue.js 3 + Vite,响应式设计,实时任务监控
- 管理后台: Vue.js 3 管理界面,系统监控,配置管理
- 组件化: 可复用的 Vue 组件,统一的设计系统
- 三分离架构: 客户端、管理端、共享数据独立存储
- 版本化迁移: 完整的数据库迁移系统,支持版本控制
- 管理工具: 命令行数据库管理工具,自动化运维
- 多环境支持: 开发、测试、生产环境配置分离
- 服务编排: Docker Compose 多服务协调
- 自动化部署: 智能部署脚本,一键部署和管理
# 查看迁移状态
python database/tools/db_manager.py migration-status
# 创建新迁移
python database/tools/create_migration.py create add_new_field --database client
# 执行迁移
python database/tools/db_manager.py migrate# 查看服务状态
./docker/deploy.sh status
# 查看日志
./docker/deploy.sh logs
# 备份数据
./docker/deploy.sh backup
# 更新服务
./docker/deploy.sh update系统通过配置文件管理工作流参数映射:
task_types:
text_to_image:
workflows:
sd_basic:
workflow_file: "workflows/text_to_image/文生图.json"
parameter_mapping:
prompt:
node_id: "314"
input_name: "text"
default_value: ""
width:
node_id: "135"
input_name: "width"
default_value: 512- 前端提交参数 (最高优先级)
- 配置文件默认值
- 工作流原始值 (最低优先级)
# 1. 创建客户端
POST /api/v2/auth/register
{
"client_name": "test_client",
"description": "测试客户端"
}
# 2. 获取访问令牌
POST /api/v2/auth/token
{
"client_id": "your_client_id",
"client_secret": "your_client_secret"
}POST /admin/auth/login
{
"username": "admin",
"password": "admin"
}POST /api/v2/tasks/image-to-video
Content-Type: application/json
Authorization: Bearer <token>
{
"image_path": "path/to/image.png",
"duration": 30,
"fps": 30,
"workflow_name": "image_to_video_basic"
}POST /api/v2/tasks/text-to-image-sdxl
Content-Type: application/json
Authorization: Bearer <token>
{
"prompt": "a beautiful landscape",
"negative_prompt": "blurry, low quality",
"width": 1024,
"height": 1024,
"workflow_name": "sdxl_basic"
}# 查看节点性能指标
GET /api/v2/admin/performance/nodes
# 查看任务执行统计
GET /api/v2/admin/performance/tasks- 系统日志:
backend/logs/system.log - 访问日志:
backend/logs/access.log - 错误日志:
backend/logs/error.log - Celery 日志:
backend/logs/celery.log
-
容器启动失败
# 查看容器日志 ./docker/deploy.sh logs # 检查服务状态 ./docker/deploy.sh status
-
数据库连接失败
# 检查数据库容器状态 docker-compose ps mysql # 查看数据库日志 docker-compose logs mysql
-
端口冲突
# 修改 .env 文件中的端口配置 FASTAPI_PORT=8080 CLIENT_PORT=8081 ADMIN_PORT=8082
-
ComfyUI 连接失败
- 检查 ComfyUI 是否正常运行
- 验证配置文件中的 host 和 port
-
Redis 连接失败
- 确保 Redis 服务已启动
- 检查防火墙设置
-
工作流执行失败
- 检查工作流文件路径
- 验证参数映射配置
- 查看 Celery Worker 日志
-
数据库连接问题
# 检查数据库状态 python database/tools/db_manager.py status # 运行迁移 python database/tools/db_manager.py migrate
-
认证失败
- 检查token是否过期
- 验证client_id和client_secret
- 确认请求头格式正确
- 调整 Celery Worker 数量
- 配置 Redis 内存限制
- 优化工作流参数
- 使用 Docker 资源限制
- Fork 项目
- 创建功能分支
- 提交更改
- 发起 Pull Request
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。