docker_worker_1 always restarting

该报错发生在 RAGFlow Docker 部署环境中,worker 容器因无法连接 Redis 而持续重启。优先排查 Redis 服务的端口映射与配置文件中的 Redis 连接地址是否一致。

快速结论:该报错发生在 RAGFlow Docker 部署环境中,worker 容器因无法连接 Redis 而持续重启。优先排查 Redis 服务的端口映射与配置文件中的 Redis 连接地址是否一致。

适用环境:RAGFlow v0.23.1(infiniflow/ragflow:v0.23.1),Docker Compose 部署,未涉及 Windows/macOS 特定系统限制(Issue 中未说明操作系统)。

最快修复方案:暂无确认的一步修复方案。Issue 讨论中仅提示检查 conf/service_config.yaml 中 Redis 配置部分,但未给出已验证的具体修改内容。

注意事项:该方案仅为讨论中提出的排查方向,未经验证。RAGFlow 后续版本已多次更新,Issue 关闭时作者询问问题是否仍然存在,说明可能已在新版本修复,建议升级镜像后重试。

问题场景

用户按照 RAGFlow 官方文档执行 docker compose 启动命令后,所有基础服务(Elasticsearch、MinIO、MySQL、Redis)均正常启动并显示 healthy,RAGFlow 主服务 ragflow-gpu 也在运行。但旧版 docker-compose 项目中的 docker_worker_1 容器(部署时间约 5 周前)持续处于 Restarting 状态,无法正常提供服务。

报错原文

docker_worker_1   sha256:bbb5b197...   "/bin/bash /entrypoi…"   worker   5 weeks ago   Restarting (1) 14 seconds ago

File "/app/api/.venv/lib/python3.12/site-packages/redis/utils.py", line 188, in wrapper
    return func(*args, **kwargs)
File "/app/api/.venv/lib/python3.12/site-packages/redis/connection.py", line 1520, in get_connection
    connection.connect()
...

原因分析

可能原因如下:

  • worker 容器无法连接到 Redis 服务。日志堆栈指向 redis-py 的 get_connectionconnection.connect(),说明在获取 Redis 连接时出错。
  • Redis 服务端口映射不匹配。docker compose ps 显示 Redis 映射为 0.0.0.0:6379->6379/tcp,若 worker 通过其他地址(如容器名 valkey/redis)访问,可能因网络或配置原因失败。
  • 配置文件中的 Redis 地址与实际部署不符。维护者在评论中提示“请检查 conf/service_config.yaml 中 Redis 部分”,但用户反馈该文件中没有 worker 相关定义,且找不到该文件。
  • 用户环境存在两套 Docker Compose 项目混跑(新部署的 ragflow compose 项目和旧版 project 名称分别为 docker_*),可能导致网络隔离或配置串扰,引入不确定因素。

环境排查

  • RAGFlow 镜像版本:infiniflow/ragflow:v0.23.1
  • Elasticsearch:8.11.3
  • MinIO:quay.io/minio/minio:RELEASE.2025-06-13T11-33-47Z
  • MySQL:mysql:8.0.39
  • Redis/Valkey:valkey/valkey:8
  • worker 服务镜像哈希:sha256:bbb5b197a907...(与 api 镜像相同)
  • 部署时长:约 5 周前创建,期间一直处于重启状态

解决步骤

以下步骤根据 Issue 讨论中的线索整理,第 1-2 步为维护者建议的排查方向,未经验证,可优先尝试:

  1. 找到 RAGFlow 配置文件 conf/service_config.yaml(通常位于 RAGFlow 源码或挂载目录下),检查 Redis 连接地址、端口、密码是否正确,确认与 docker compose ps 中 Redis 的映射端口一致。
  2. 确认 worker 容器与 Redis 容器处于同一 Docker 网络。可执行 docker network inspect 查看两个容器的网络归属。
  3. 检查是否存在两个 Docker Compose 项目(新部署的 ragflow 项目和旧版项目)冲突。如确认是旧容器,尝试用新部署的 ragflow 服务替代旧 worker,或清理旧容器再重新拉起。
  4. 如以上都无果,升级 RAGFlow 到最新版本再测试,因为 Issue 关闭时作者表示已发布多次更新,问题可能已在新版修复。

验证方法

重新查看容器状态:执行 docker compose ps,确认 worker 容器状态不再是 Restarting,而变为 Up 并持续运行几分钟以上;随后执行 docker logs --tail 50 docker_worker_1,确认日志中不再出现 redis 连接相关的 Traceback 报错。

参考来源

infiniflow/ragflow #12511

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 22017

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注