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 配置通過運行狀況檢查和依賴項聲明確保正確的服務啟動順序。卷掛載提供持久存儲和配置注入點。