Skip to content

开发环境部署

目录

  1. 简介
  2. 容器化部署方案
  3. 非容器化部署方案
  4. 部署方式对比
  5. 常见问题排查
  6. 服务验证方法

简介

本文档提供AgentChat项目的本地开发环境部署指南,涵盖两种主要部署方式:基于Docker的容器化部署和基于脚本的直接运行部署。文档详细说明了各服务的配置参数、依赖关系、端口映射和环境变量设置,并提供常见问题的解决方案。

容器化部署方案

AgentChat项目提供了完整的Docker Compose配置,用于在隔离环境中快速启动所有服务。该方案通过docker-compose.yml文件定义了MySQL、Redis、后端API和前端服务的配置。

图示来源

本节来源

服务配置详解

MySQL服务

MySQL服务作为项目的主要数据存储,配置如下:

  • 容器名称: agentchat-mysql
  • 端口映射: 3306:3306 (主机:容器)
  • 环境变量:
    • MYSQL_ROOT_PASSWORD: 123456
    • MYSQL_DATABASE: agentchat
    • MYSQL_USER: agentchat_user
    • MYSQL_PASSWORD: 123456
  • 数据卷: mysql_data (持久化存储)
  • 健康检查: 使用mysqladmin ping命令检测服务状态

Redis服务

Redis服务提供缓存功能,配置如下:

  • 容器名称: agentchat-redis
  • 端口映射: 6379:6379 (主机:容器)
  • 环境变量: TZ: Asia/Shanghai
  • 数据卷: redis_data (持久化存储)
  • 健康检查: 使用redis-cli ping命令检测服务状态

后端API服务

后端服务基于FastAPI框架,配置如下:

  • 容器名称: agentchat-backend
  • 端口映射: 7860:7860 (主机:容器)
  • 环境变量:
    • DATABASE_URL: mysql://agentchat_user:123456@mysql:3306/agentchat
    • REDIS_URL: redis://redis:6379/0
    • APP_ENV: development
    • JWT_SECRET_KEY: your-super-secret-jwt-key-change-in-production
    • OPENAI_API_KEY: $
  • 依赖关系: 依赖MySQL和Redis服务,且需等待它们健康后才启动
  • 健康检查: 通过curl访问http://localhost:7860/health接口检测服务状态

前端服务

前端服务基于Vue框架,配置如下:

  • 容器名称: agentchat-frontend
  • 端口映射: 8090:8090 (主机:容器)
  • 环境变量:
  • 依赖关系: 依赖后端服务
  • 健康检查: 通过curl访问http://localhost:8090检测服务状态

本节来源

非容器化部署方案

对于需要频繁调试的开发者,项目提供了scripts/start.py脚本,可直接在本地环境中启动服务。

脚本执行流程

图示来源

本节来源

实现逻辑分析

start.py脚本的主要功能包括:

  1. 路径设置: 自动识别项目根目录、后端目录和前端目录
  2. 依赖安装: 在项目根目录查找request*.txtrequirements.txt文件并安装Python依赖
  3. 并发启动: 使用subprocess.Popen同时启动后端和前端服务
  4. 进程管理: 维护进程列表,支持通过Ctrl+C优雅关闭所有服务

后端服务通过uvicorn启动,监听7860端口;前端服务通过npm run dev启动,监听8090端口。脚本会实时显示两个服务的日志输出。

本节来源

部署方式对比

特性容器化部署非容器化部署
环境隔离高,完全隔离低,依赖本地环境
依赖管理内置,自动安装需手动管理
启动速度较慢,需构建镜像快,直接运行
调试便利性较差,需进入容器好,直接修改代码
端口冲突少,独立网络可能发生
适用场景生产环境、团队协作本地开发、调试

本节来源

常见问题排查

端口冲突

当指定端口已被占用时,服务无法启动。解决方案:

  1. 使用netstat -ano | findstr :端口号(Windows)或lsof -i :端口号(Linux/Mac)查找占用进程
  2. 终止占用进程或修改docker-compose.yml中的端口映射

依赖安装失败

可能原因及解决方案:

  • 缺少requirements.txt: 确保项目根目录存在依赖文件
  • 网络问题: 配置pip镜像源或使用国内镜像
  • 权限问题: 以管理员权限运行安装命令

服务启动超时

特别是MySQL和后端服务可能因初始化耗时较长而超时:

  • 增加healthcheck的retries和timeout值
  • 检查数据库初始化脚本是否过于复杂
  • 确保有足够的系统资源

环境变量未设置

对于AI模型相关的API密钥,需在运行前设置:

bash
export OPENAI_API_KEY=your_key
export ANTHROPIC_API_KEY=your_key

本节来源

服务验证方法

访问前端界面

启动成功后,可通过浏览器访问http://localhost:8090查看前端界面是否正常加载。

调用健康检查接口

各服务提供了健康检查接口,可用于验证服务状态:

API功能测试

通过前端界面或Postman等工具调用主要API接口,验证数据交互是否正常。

本节来源

基于 MIT 许可发布