【RAGFlow代码详解-28】部署和基础设施
Docker 部署架构
RAGFlow 使用多阶段 Docker 构建过程和 Docker Compose 编排进行部署。该系统支持完整和轻量级部署变体。
多阶段 Docker 构建
构建过程由 Dockerfile 2-214
中定义的三个阶段组成:
- 基础阶段 :使用系统依赖项、ML 模型和运行时环境设置 Ubuntu 22.04
- 构建器阶段 :通过 uv 安装 Python 依赖,构建 React 前端,并生成版本信息
- 生产阶段 :复制构建的工件并创建最终的运行时映像
服务编排
Docker Compose 编排 docker/docker-compose.yml 1-75
中 定义的多个服务主 ragflow-server 容器运行由 docker/entrypoint.sh 1-211
控制的 多个进程
集装箱入口点和流程管理
入口点脚本通过命令行选项提供灵活的流程管理:
选择 | 目的 | 违约 |
---|---|---|
–disable-webserver | 禁用 nginx + ragflow_server | 启用 |
–disable-taskexecutor | 禁用后台辅助角色 | 启用 |
–enable-mcpserver | 启用 MCP 服务器 | 禁用 |
–workers= | 任务执行器数量 | 1 |
–host-id= | 唯一主机标识符 | 主机名 |
该脚本处理配置模板并根据标志启动服务:
# Web server startup
if [[ "${ENABLE_WEBSERVER}" -eq 1 ]]; then/usr/sbin/nginxpython3 api/ragflow_server.py &
fi# Task executor startup
if [[ "${ENABLE_TASKEXECUTOR}" -eq 1 ]]; thenfor (( i=0; i<WORKERS; i++ )); dotask_exe "${i}" "${HOST_ID}" &done
fi
构建系统和 CI/CD
GitHub Actions 工作流
RAGFlow 使用两个主要的 GitHub Actions 工作流进行持续集成和部署:
测试工作流 .github/workflows/tests.yml 1-176
构建了 slim 和 full 变体,然后针对不同的文档存储后端运行全面的测试。发布工作流
.github/workflows/release.yml 1-119
处理具有 Docker 映像发布和 PyPI 包分发的自动发布。
依赖关系管理
生成过程使用专用的依赖项下载脚本来处理:
- ML 模型 :从 Hugging Face 存储库下载用于文档处理和嵌入
- 系统库 :获取 Chrome/ChromeDriver 二进制文件、Tika 服务器、SSL 库
- 自然语言数据 :下载用于文本处理的 NLTK 语料库
该脚本支持中国镜像选项,以便通过 --china-mirrors
标志在受限网络中进行访问。
MCP 服务器部署
模型上下文协议 (MCP) 服务器为 AI 模型交互提供了标准化接口,并且可以部署在多种配置中。
MCP 服务器架构
mcp/server/server.py 1-457
中 定义的 MCP 服务器支持两种部署模式:
- 自托管模式 :单租户部署,使用固定 API 密钥进行 RAGFlow 访问
- 主机模式 :客户端提供授权标头的多租户部署
传输选项包括旧版 SSE 终结点和具有可选 JSON 响应的新式可流式 HTTP。
MCP 服务器配置
服务器通过命令行选项和环境变量接受广泛的配置:
参数 | 环境变量 | 违约 | 描述 |
---|---|---|---|
–base-url | RAGFLOW_MCP_BASE_URL | http://127.0.0.1:9380 | RAGFlow API 基本 URL |
–host | RAGFLOW_MCP_HOST | 127.0.0.1 | MCP 服务器绑定地址 |
–port | RAGFLOW_MCP_PORT | 9382 | MCP 服务器端口 |
–mode | RAGFLOW_MCP_LAUNCH_MODE | self-host | 部署模式 |
–api-key | RAGFLOW_MCP_HOST_API_KEY | - | 自托管模式的 API 密钥 |
Docker Compose 集成允许通过容器命令参数激活 MCP 服务器:
command:- --enable-mcpserver- --mcp-host=0.0.0.0- --mcp-port=9382- --mcp-base-url=http://127.0.0.1:9380- --mcp-mode=self-host
版本管理
RAGFlow 实现动态版本检测,适应不同的部署环境:
api/versions.py 23-52
中的 版本系统优先考虑 Docker 构建期间生成的 VERSION 文件,回退到开发环境中的 Git 标签信息。构建变体(slim/full)由 LIGHTEN 环境变量确定。
基础结构服务依赖项
RAGFlow 的部署需要在具有特定启动依赖关系和运行状况检查的多个基础设施服务之间进行协调:
Docker Compose 配置通过运行状况检查和依赖项声明确保正确的服务启动顺序。卷挂载提供持久存储和配置注入点。