快速结论:这是 RAGFlow 仓库 main 分支部署文件与 v0.25.6 旧镜像不兼容导致的启动失败。优先检查 docker/.env 中的 RAGFLOW_IMAGE 与实际使用的部署文件版本是否匹配,建议改回 v0.25.6 标签对应的部署配置,或改用 dev 镜像。
适用环境:RAGFlow v0.25.6 镜像(infiniflow/ragflow:v0.25.6)、Docker Compose 部署方式、部署目录 docker/、当前 main 分支代码提交 ID 9f3e289b7803c1b0b4873a89586b1ec9077ea57f。
最快修复方案:在 docker/.env 中将镜像配置改为 RAGFLOW_IMAGE=infiniflow/ragflow:dev 后重新执行 docker compose up -d。该方案在 Issue 评论中被确认可行。
注意事项:dev 镜像为开发版本,可能包含未正式发布的功能或不稳定更新;若需使用稳定的 v0.25.6 版本,可优先尝试切换到 v0.25.6 标签的部署文件(git checkout v0.25.6)。
问题场景
从 RAGFlow 仓库 main 分支检出代码后,在 docker/ 目录使用 Docker Compose 启动 ragflow-cpu 服务。配置 .env 中指定 RAGFLOW_IMAGE=infiniflow/ragflow:v0.25.6,执行 docker compose up -d 后容器反复重启,无法正常初始化。
报错原文
Start RAGFlow cluster, version:
v0.25.6
Applied nginx config: ragflow.conf.python
[docling] disabled by USE_DOCLING
Initializing database tables...
Database tables initialized.
Running model provider table migrations...
python3: can't open file '/ragflow/tools/scripts/mysql_migration.py': [Errno 2] No such file or directory
原因分析
核心原因是仓库 main 分支部署文件与镜像版本不匹配。main 分支上的 docker-compose.yml 新增了 --init-model-provider-tables 启动参数(由 PR #14595 引入),而 entrypoint.sh 会调用 tools/scripts/mysql_migration.py 执行数据库迁移。但 v0.25.6 发布时还没有这些文件和参数,因此旧镜像内不存在 mysql_migration.py 文件。由于 docker-compose.yml 只挂载了部分文件(如 entrypoint.sh),宿主机的 tools/scripts/mysql_migration.py 不会进入容器,导致容器启动时找不到该脚本。
环境排查
- 确认 docker/.env 中 RAGFLOW_IMAGE 的配置值
- 确认 docker-compose.yml 中 ragflow-cpu 服务是否包含
--init-model-provider-tables参数(main 分支新增,v0.25.6 没有) - 确认实际使用的部署文件来自哪个分支或标签:建议对比 git checkout v0.25.6 与 main 分支下 docker/ 目录内容的差异
- 检查 entrypoint.sh 中是否有调用
tools/scripts/mysql_migration.py的逻辑(此逻辑在 main 分支上位于约第 275-284 行) - 如需使用旧镜像,确认是否同时使用了与镜像匹配的旧版部署文件
解决步骤
- 首先停止当前失败的容器:
docker compose down - 方法一(推荐):编辑 docker/.env,将 RAGFLOW_IMAGE 修改为
infiniflow/ragflow:dev,然后执行docker compose up -d启动。dev 镜像包含 main 分支所需的迁移脚本和参数。 - 方法二(稳定版):如果想继续使用 v0.25.6 镜像,切换到 v0.25.6 标签对应的部署文件:
git checkout v0.25.6,然后在 docker/ 目录执行docker compose up -d - 如果选择方法二,注意切换标签后 docker/ 目录下的 docker-compose.yml、entrypoint.sh 和 .env 都会回退到 v0.25.6 版本,不再包含
--init-model-provider-tables参数 - 无论选择哪种方式,启动后建议观察日志确认初始化是否完成
验证方法
重新启动后执行 docker compose logs -f ragflow-cpu 观察日志,确认容器不再反复重启,且能看到正常的初始化完成信息。同时确认启动参数中不再出现 --init-model-provider-tables 但日志中仍报缺失 mysql_migration.py 的情况。若使用 dev 镜像,应能看到数据库模型提供方表迁移正常执行完成。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。
![[Bug]: Dataflow pipeline crashes with KeyError: 'path' when stored DSL lacks the path key](https://www.chat-gpts.plus/wp-content/uploads/2026/08/18746-a051003b-768x403.jpg)
![[Bug]: Redacted tool-call arguments ("redacted-by-litellm") spam "Failed to parse tool call arguments" warnings via spend-log tool index](https://www.chat-gpts.plus/wp-content/uploads/2026/08/36647-d46649b0-768x403.jpg)
