RAG API 支持两种部署模式,以满足不同场景的需求:
- 生产模式 (Production) - 标准容器部署
- 开发模式 (Development) - 代码外挂,支持热重载
| 特性 | 生产模式 | 开发模式 |
|---|---|---|
| Docker Compose 文件 | docker-compose.yml |
docker-compose.dev.yml |
| 代码存储位置 | 容器内部 | 挂载本地目录 |
| 代码修改后 | 需要重新构建镜像 | 自动重载(热重载) |
| 适用场景 | 生产环境、稳定部署 | 本地开发、调试测试 |
| 性能 | 最优 | 略低(文件系统挂载) |
| 安全性 | 高 | 中(暴露源代码) |
运行部署脚本时,会提示选择部署模式:
./deploy.sh脚本会显示以下选项:
请选择部署模式:
1) 生产模式 (Production) - 标准容器部署,适合生产环境
2) 开发模式 (Development) - 外挂代码库,支持热重载,适合开发调试
请输入选择 (1/2, 默认: 1):
- 输入
1或直接回车:使用生产模式 - 输入
2:使用开发模式
docker compose -f docker-compose.yml build
docker compose -f docker-compose.yml up -ddocker compose -f docker-compose.dev.yml build
docker compose -f docker-compose.dev.yml up -d或使用简化脚本:
./scripts/dev.sh开发模式会将本地代码目录挂载到容器中:
volumes:
- ./api:/app/api
- ./src:/app/src
- ./main.py:/app/main.py使用 watchfiles 实现自动重载:
CMD ["watchfiles", "--filter", "python", "uvicorn main:app --host 0.0.0.0 --port 8000"]当检测到 Python 文件变化时,自动重启应用。
- 本地开发:修改代码后立即生效,无需重新构建镜像
- 调试测试:快速验证代码变更
- 学习研究:方便查看和修改源代码
# 启动服务
docker compose -f docker-compose.yml up -d
# 查看日志
docker compose -f docker-compose.yml logs -f
# 重启服务
docker compose -f docker-compose.yml restart
# 停止服务
docker compose -f docker-compose.yml down# 启动服务
docker compose -f docker-compose.dev.yml up -d
# 查看日志(观察热重载)
docker compose -f docker-compose.dev.yml logs -f
# 重启服务
docker compose -f docker-compose.dev.yml restart
# 停止服务
docker compose -f docker-compose.dev.yml down# 停止生产模式
docker compose -f docker-compose.yml down
# 启动开发模式
docker compose -f docker-compose.dev.yml up -d# 停止开发模式
docker compose -f docker-compose.dev.yml down
# 启动生产模式
docker compose -f docker-compose.yml up -d-
不建议用于生产环境
- 代码外挂会暴露源代码
- 性能略低于生产模式
- 文件系统挂载可能有权限问题
-
文件权限
- 确保本地代码目录有正确的权限
- 容器内用户需要能读取挂载的文件
-
热重载限制
- 只监控 Python 文件变更
- 配置文件(如
.env)变更需要手动重启 - 依赖变更需要重新构建镜像
-
代码更新
- 修改代码后需要重新构建镜像
- 使用
./scripts/update.sh脚本进行更新
-
版本控制
- 建议使用 Git 标签管理版本
- 构建时指定明确的版本号
- 生产模式:约 10-15 秒
- 开发模式:约 12-18 秒(包含挂载和 watchfiles 初始化)
- 生产模式:100% 基准性能
- 开发模式:约 95-98% 性能(文件系统挂载开销)
- 生产模式:需要重新构建镜像(2-5 分钟)
- 开发模式:自动重载(2-5 秒)
- 使用开发模式进行日常开发
- 频繁测试和迭代
- 提交前切换到生产模式进行完整测试
- 始终使用生产模式
- 通过 CI/CD 自动构建和部署
- 使用版本标签管理发布
- 统一开发环境配置
- 在
.env.example中提供完整的环境变量示例 - 文档化特殊配置和依赖
- 检查本地代码目录权限
- 确保 Docker 有权访问项目目录
- 查看容器日志:
docker compose -f docker-compose.dev.yml logs
- 确认修改的是 Python 文件
- 检查
watchfiles是否正常运行 - 查看容器日志确认重载事件
- 使用多阶段构建优化镜像
- 清理不必要的依赖和缓存
- 使用
.dockerignore排除不需要的文件
-
v1.1 (2025-10-30)
- 添加部署模式选择功能
- 支持生产模式和开发模式切换
- 优化部署脚本用户体验
-
v1.0 (2025-10-23)
- 初始版本
- 仅支持生产模式部署