本页面介绍了如何使用 Docker 部署 RAGFlow,包括先决条件、部署选项、配置和常见的部署场景。有关从源代码构建 Docker 镜像的信息,请参阅构建 Docker 镜像。
RAGFlow 提供官方 Docker 镜像,以简化在各种环境中的部署。Docker 是部署 RAGFlow 的推荐方式,因为它封装了所有依赖项并确保了跨不同平台的一致性。
来源: README.md134-140 README.md173-189
在使用 Docker 部署 RAGFlow 之前,请确保您的系统满足以下要求
| 要求 | 最低配置要求 |
|---|---|
| CPU | 4 核 (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
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 部署。
克隆仓库
启动容器
验证部署
对于具有 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: 文档引擎选择 (elasticsearch 或 infinity)示例
service_conf.yaml.template 文件配置后端服务,包括:
当 Docker 容器启动时,此模板中的环境变量会自动填充。
docker-compose.yml 文件定义了容器结构和网络。要修改端口映射或容器资源,请编辑此文件。
例如,要将 HTTP 端口从默认的 80 更改为:
来源: README.md229-238 README.md205-224
RAGFlow 支持两种文档引擎:Elasticsearch(默认)和 Infinity。要在它们之间切换:
停止所有容器
警告:使用 -v 将删除所有容器卷并清除现有数据。
在 .env 文件中设置 DOC_ENGINE。
启动容器
来源: README.md250-273
为了处理大量文档,您可以扩展任务执行器的数量。
这通过在启动容器时传递给入口点脚本的参数进行控制。
或者,您可以指定消费者 ID 范围。
来源: docker/entrypoint.sh8-22 docker/entrypoint.sh92-139
您可以为特定部署禁用某些组件。
仅 Web 服务器:禁用任务执行器
仅任务执行器:禁用 Web 服务器
这允许进行分布式部署,其中组件在不同的机器上运行。
来源: docker/entrypoint.sh8-22 docker/entrypoint.sh112-137
要将 RAGFlow 升级到新版本,请同时更新代码和 Docker 镜像。
拉取最新代码
更新 .env 中的镜像版本。
拉取新镜像并重启
对于离线环境,您可以导出/导入 Docker 镜像。
来源: docs/guides/upgrade_ragflow.mdx10-101
使用 Docker 部署 RAGFlow 时的常见问题和解决方案
vm.max_map_count 是否正确设置(Elasticsearch 需要)要检查正在运行的 RAGFlow 版本,请检查容器中的 VERSION 文件,或使用返回版本信息的 API 端点。
版本信息在 Docker 镜像构建过程中生成并存储在 VERSION 文件中,应用程序在运行时通过 get_ragflow_version() 函数读取此文件。