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.pswp.cn/pingmian/94404.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/94404.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/94404.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【prism】Prism 弹窗在 ViewModel 中控制大小的实践总结

好 &#x1f44d; 这个思路非常适合写成一篇 实用型博客&#xff0c;主题就是 “Prism 弹窗如何在 ViewModel 中控制窗口大小”。我帮你整理了一篇文章草稿&#xff0c;你可以直接拿去修改/发布。Prism 弹窗在 ViewModel 中控制大小的实践总结 在 WPF 中使用 Prism 的 IDialogS…

项目管理进阶——研发项目立项管理制度

为使公司研究开发(以下简称研发)项目的管理工作规范化、程序化、充分调度研发人员的积极性,提高研发成果的产出率和成果转化率,特制定管理办法。 一、 研发项目的立项: 原则上公司部设立基础研究项目。研发项目的重点放在符合市场需要。能很快转化成产品,或对现有生产工…

CMake构建学习笔记20-iconv库的构建

1. 构建 iconv是一个用于在不同字符编码&#xff08;如 UTF-8、GBK、ISO-8859-1 等&#xff09;之间进行转换的开源库。笔者在《c中utf8字符串和gbk字符串的转换》这篇文章中介绍过如何在Windows下实现utf8字符串和gbk字符串的转换&#xff0c;不过该实现是基于Win32 API的&am…

STM32的Sg90舵机

1.舵机到底要的是什么信号&#xff1f;想象舵机就像一个“听秒表的工人”&#xff1a;这个工人每隔 20ms 就抬头看看秒表一次。秒表上的 高电平持续多久&#xff0c;他就把这个时间当成“指令角度”。高 1ms → 转到最左&#xff08;0&#xff09; 高 1.5ms → 转到中间&#x…

动态带宽扩展(DBE):下一代Wi-Fi性能提升的关键技术

动态带宽扩展(DBE):下一代Wi-Fi性能提升的关键技术 引言 在无线通信技术快速发展的今天,用户对网络带宽和传输速率的需求呈指数级增长。为了满足这种需求,IEEE 802.11标准不断演进,引入了多项创新技术。其中,动态带宽扩展(Dynamic Bandwidth Expansion, DBE) 作为80…

Seaborn数据可视化实战:Seaborn数据可视化基础-从内置数据集到外部数据集的应用

Seaborn数据集探索与图表绘制实践 学习目标 通过本课程&#xff0c;你将学习如何使用Seaborn库中的内置数据集&#xff0c;了解如何加载这些数据集&#xff0c;并掌握使用这些数据集绘制图表的基本方法。此外&#xff0c;你还将学习如何导入外部数据集&#xff0c;并在Seaborn中…

漫谈《数字图像处理》之经典空域边缘检测Canny与LOG

在《数字图像处理》的图像分割领域&#xff0c;Canny 边缘检测与 LOG&#xff08;高斯拉普拉斯&#xff09;边缘检测是两款极具代表性的先进空域算法。不同于深度学习驱动的方法&#xff0c;它们通过对图像像素的直接计算提取边缘&#xff0c;下面用更贴近日常认知的语言&#…

抢红包案例加强版

加join的功能是保证线程全部运行完毕&#xff0c;之后好统计构造器刚开始为空列表&#xff0c;利用这个方法返回每个成员列表&#xff08;把每个员工弄成一个列表里面写他们抢到的红包大小&#xff0c;索引代表抢到的个数。&#xff09;

曲面方程的三维可视化:从数学解析到Python实现

在三维几何建模中,我们经常遇到需要将隐式方程可视化的需求。本文将深入探讨一个特定的曲面方程: XH−YH2+ZH2tan⁡(θ)−H2πarcsin⁡(YHYH2+ZH2)=0 X_H - \frac{\sqrt{Y_H^2 + Z_H^2}}{\tan(\theta)} - \frac{H}{2\pi} \arcsin\left( \frac{Y_H}{\sqrt{Y_H^2 + Z_H^2}} \r…

当GitHub宕机时,我们如何协作

引言简述GitHub在全球开发协作中的重要性提出假设性问题&#xff1a;当GitHub不可用时&#xff0c;如何确保团队协作不中断常见的GitHub宕机场景服务完全不可用&#xff08;如DNS问题、全球性故障&#xff09;部分功能受限&#xff08;如API速率限制、仓库访问失败&#xff09;…

如何确定哪些层应添加适配器(Adapter)?(58)

“它如何确定哪些层应添加适配器(Adapter)?是否只有量化层符合条件?我能否也将适配器添加到常规(非量化)线性层上?” 这个问题提得很好,我会逐一为你解答。首先,先给出简洁结论: • 主流模型架构会预配置目标层列表,适配器将应用于这些列表中的层。 • 无论目标层…

【内网渗透】CVE-2025-21420 利用cleanmgr本地提权

目录 原理 POC 复现 一个windows本地提权漏洞 这是一个存在于Windows磁盘清理工具&#xff08;cleanmgr.exe&#xff09;中的权限提升漏洞。攻击者可以利用该系统组件在处理特定目录时的逻辑缺陷&#xff0c;通过精心构造的符号链接&#xff08;Symbolic Link&#xff09;&a…

什么是JSON-RPC 2.0,在项目中应该怎么使用

它是什么 JSON-RPC 2.0 是一种超轻量、与传输无关的远程调用协议&#xff1a;用 JSON 表达“方法名 参数 → 结果/错误”。可跑在 HTTP、WebSocket、Unix 管道&#xff0c;甚至 stdio 上&#xff08;很多开发协议如 LSP 就用它&#xff09;。 报文长这样 • 请求&#xff1a; …

基于CentOS7:Linux服务器的初始化流程

文章目录前言一、服务器初始化1.1 配置国内 Yum 源&#xff08;加速软件安装&#xff09;1.1.1 使用阿里云源1.1.2 使用清华源&#xff08;可选&#xff09;1.2 更新系统与安装必备工具1.3 网络连接验证1.4 配置主机名1.5 同步时间1.6 配置iptables防火墙1.6.1 手动配置iptable…

如何避免MyBatis二级缓存中的脏读

避免 MyBatis 二级缓存中的脏读问题&#xff08;即缓存数据与数据库实际数据不一致&#xff09;&#xff0c;需要从缓存更新机制、配置策略、业务设计等多维度入手。以下是经过实践验证的解决方案&#xff0c;结合底层原理和具体实现&#xff1a;一、理解二级缓存脏读的根源脏读…

Python实现RANSAC进行点云直线、平面、曲面、圆、球体和圆柱拟合

本节我们分享使用RANSAC算法进行点云的拟合。RANSAC算法是什么&#xff1f;不知道的同学们前排罚站&#xff01;(前面有)总的来说&#xff0c;RANSAC&#xff08;Random Sample Consensus&#xff09;是一种通用的迭代鲁棒估计框架&#xff0c;无论拟合何种几何模型&#xff0c…

实验2 天气预报

实验1 天气预报一、实验目标二、实验步骤&#xff08;一&#xff09;准备工作&#xff08;二&#xff09;小程序开发项目创建页面配置视图设计逻辑实现三、程序运行结果四、问题总结与体会主要问题及解决方案主要收获chunk的博客地址一、实验目标 1、掌握服务器域名配置和临时…

【CVE-2025-5419】(内附EXP) Google Chrome 越界读写漏洞【内附EXP】

前言 近日,奇安信CERT监测到Google Chrome中曝出一枚高危安全漏洞(CVE-2025-5419,QVD-2025-21836),该漏洞属于越界读写问题,攻击者只需通过构造恶意网页,就可能触发漏洞,从而绕过Chrome的沙箱防护,直接实现远程代码执行,最终完全控制用户设备。目前,安全社区已确认…

【科研绘图系列】R语言在海洋生态学中的应用:浮游植物糖类组成与溶解性有机碳的关系

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍 数据准备 数据处理 糖类组成随年龄的变化 糖类组成与DOC含量的关系 数据可视化 加载R包 数据下载 导入数据 数据预处理 画图 总结 系统信息 介绍 本教材通过R语言及其强大的数据…

webpack文件指纹:hash、chunkhash与contenthash详解

文件指纹就是打包后输出文件的后缀&#xff0c;每次构建都会生成不同的文件后缀&#xff0c;这样可以防止浏览器的默认缓存&#xff0c;使客户端代码可以及时修改。文件指纹的三种方式&#xff1a;‌ hash ‌&#xff1a;基于整个项目构建内容生成全局哈希值&#xff0c;任何文…