当前位置: 首页 > news >正文

【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-urlRAGFLOW_MCP_BASE_URLhttp://127.0.0.1:9380RAGFlow API 基本 URL
–hostRAGFLOW_MCP_HOST127.0.0.1MCP 服务器绑定地址
–portRAGFLOW_MCP_PORT9382MCP 服务器端口
–modeRAGFLOW_MCP_LAUNCH_MODEself-host部署模式
–api-keyRAGFLOW_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 配置通过运行状况检查和依赖项声明确保正确的服务启动顺序。卷挂载提供持久存储和配置注入点。

http://www.dtcms.com/a/351660.html

相关文章:

  • 国标28181 国标视频平台
  • 四、Python 脚本常用模块(续)
  • Linux虚拟机ansible部署
  • 机器视觉学习-day04-形态学变换
  • Spring Boot 与传统 Spring:从 WAR 到可执行 JAR,颠覆性的部署哲学
  • MEMS陀螺定向短节与传统陀螺工具的区别?
  • 永磁同步电机无速度算法--传统脉振方波注入法(1)
  • 图片生成视频软件深度评测:浅谈视频音频提取技术
  • Boris FX Samplitude Suite 2025.0.0 音频录制/编辑和母带处理
  • 不增加 GPU,首 Token 延迟下降 50%|LLM 服务负载均衡的新实践
  • 如何基于阿里云OpenSearch LLM搭建智能客服平台
  • ssc37x平台的音频应用demo
  • 160.在 Vue3 中用 OpenLayers 解决国内 OpenStreetMap 地图加载不出来的问题
  • Mamba-HoME:面向3D医学影像分割的层次化专家混合新框架
  • 蓝思科技半年净利超11亿,蓝思成绩单怎么分析?
  • 为什么选择爱普生TG5032CFN温补晶振—可穿戴设备?
  • Pycharm
  • 前端漏洞(上)- JSONHijacking 漏洞
  • LangGraph-2-Demo
  • 基于goofys挂载s3到ubuntu, 没用s3fs因为它兼容性不太好
  • Stream流中的Map与flatMap的区别
  • 《从裸机到 GPU 共享:一步一步在 Kubernetes 上部署 NVIDIA GPU Operator + KAI Scheduler》
  • Python训练营打卡Day44-通道注意力(SE注意力)
  • 数字IC前端设计——前仿篇(VCS,DVE,Verdi)
  • 【Redis 进阶】-----哨兵 Sentinel(重点理解流程和原理)
  • 构建智能提示词工程师:LangGraph 的自动化提示词生成流程
  • 【远程软件VNC】经典远程软件VNC保姆级下载安装图文教程(附安装包)
  • STL——priority_queue的使用(快速入门详细)
  • 【硬件-笔试面试题-60】硬件/电子工程师,笔试面试题-60,(知识点:CAN总线通信原理)
  • 红黑树下探玄机:C++ setmultiset 的幕后之旅