菜单

Docker 部署

相关源文件

本页面介绍了如何使用 Docker 部署 RAGFlow,包括先决条件、部署选项、配置和常见的部署场景。有关从源代码构建 Docker 镜像的信息,请参阅构建 Docker 镜像

概述

RAGFlow 提供官方 Docker 镜像,以简化在各种环境中的部署。Docker 是部署 RAGFlow 的推荐方式,因为它封装了所有依赖项并确保了跨不同平台的一致性。

来源: README.md134-140 README.md173-189

先决条件

在使用 Docker 部署 RAGFlow 之前,请确保您的系统满足以下要求

要求最低配置要求
CPU4 核 (x86)
内存16 GB
磁盘50 GB
Docker≥ 24.0.0
Docker Compose≥ v2.26.1

此外,为使 Elasticsearch 正常运行,您需要配置 vm.max_map_count 设置。

来源: README.md134-140 docs/quickstart.mdx26-32 docs/quickstart.mdx37-174

Docker 镜像

RAGFlow 提供多种 Docker 镜像变体,以适应不同的部署需求

镜像标签大小包含嵌入模型目的
v0.17.2~9GB包含嵌入模型的稳定版本
v0.17.2-slim~2GB不含嵌入模型的稳定版本
nightly~9GB包含嵌入模型的最新开发版本
nightly-slim~2GB不含嵌入模型的最新开发版本

“slim”变体体积显著较小,但需要外部嵌入服务;而完整镜像则包含嵌入模型,可供离线使用。

来源: README.md183-188 docs/quickstart.mdx199-212

部署架构

下图说明了标准 RAGFlow Docker 设置中部署的组件

来源: README.md126-130 docker/entrypoint.sh1-139 Dockerfile1-211

部署方法

标准部署

对于大多数生产环境,推荐使用标准的 Docker Compose 部署。

  1. 克隆仓库

  2. 启动容器

  3. 验证部署

GPU 加速部署

对于具有 NVIDIA GPU 的环境,请使用启用 GPU 的 Docker Compose 文件来加速嵌入和 DeepDoc 任务。

此配置利用 GPU 加速,以提高嵌入模型和文档处理的性能。

来源: README.md173-189 docs/quickstart.mdx185-197

容器架构

下图显示了标准 RAGFlow 部署中容器之间的关系。

注意:文档存储可以是 Elasticsearch (ragflow-es01) 或 Infinity (ragflow-infinity),具体取决于配置。

来源: docker/entrypoint.sh92-139 Dockerfile179-210

配置

RAGFlow 部署通过几个关键文件进行配置

环境变量配置

docker 目录中的 .env 文件控制着基本的部署设置:

  • RAGFLOW_IMAGE: 指定要使用的 Docker 镜像版本
  • SVR_HTTP_PORT: Web 界面的 HTTP 端口
  • MYSQL_PASSWORD, MINIO_PASSWORD: 数据库和存储凭据
  • DOC_ENGINE: 文档引擎选择 (elasticsearchinfinity)

示例

服务配置

service_conf.yaml.template 文件配置后端服务,包括:

  • LLM 提供商和 API 密钥
  • 嵌入模型设置
  • 文档处理选项
  • 存储连接

当 Docker 容器启动时,此模板中的环境变量会自动填充。

Docker Compose 配置

docker-compose.yml 文件定义了容器结构和网络。要修改端口映射或容器资源,请编辑此文件。

例如,要将 HTTP 端口从默认的 80 更改为:

来源: README.md229-238 README.md205-224

高级部署场景

切换文档引擎

RAGFlow 支持两种文档引擎:Elasticsearch(默认)和 Infinity。要在它们之间切换:

  1. 停止所有容器

    警告:使用 -v 将删除所有容器卷并清除现有数据。

  2. .env 文件中设置 DOC_ENGINE

  3. 启动容器

来源: README.md250-273

扩展任务执行器

为了处理大量文档,您可以扩展任务执行器的数量。

这通过在启动容器时传递给入口点脚本的参数进行控制。

或者,您可以指定消费者 ID 范围。

来源: docker/entrypoint.sh8-22 docker/entrypoint.sh92-139

组件特定部署

您可以为特定部署禁用某些组件。

  • 仅 Web 服务器:禁用任务执行器

  • 仅任务执行器:禁用 Web 服务器

这允许进行分布式部署,其中组件在不同的机器上运行。

来源: docker/entrypoint.sh8-22 docker/entrypoint.sh112-137

升级 RAGFlow

要将 RAGFlow 升级到新版本,请同时更新代码和 Docker 镜像。

  1. 拉取最新代码

  2. 更新 .env 中的镜像版本。

  3. 拉取新镜像并重启

对于离线环境,您可以导出/导入 Docker 镜像。

来源: docs/guides/upgrade_ragflow.mdx10-101

故障排除

使用 Docker 部署 RAGFlow 时的常见问题和解决方案

容器启动失败

  • 检查 vm.max_map_count 是否正确设置(Elasticsearch 需要)
  • 验证 Docker 和 Docker Compose 版本是否满足最低要求
  • 检查端口是否已被其他应用程序占用

文件解析问题

  • 如果解析在 1% 以下停滞,请增加容器资源或检查文件兼容性。
  • 如果解析在接近完成时停滞,请检查容器日志以查找错误。

网络问题

  • 确保所有必需端口均可访问(默认为 80/HTTP)
  • 验证容器网络是否配置正确
  • 检查 Docker 日志以查找连接错误

版本信息

要检查正在运行的 RAGFlow 版本,请检查容器中的 VERSION 文件,或使用返回版本信息的 API 端点。

版本信息在 Docker 镜像构建过程中生成并存储在 VERSION 文件中,应用程序在运行时通过 get_ragflow_version() 函数读取此文件。

来源: api/versions.py1-52 api/db/runtime_config.py37-38