【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.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;任何文…