issue: Container exits with code 0 and no logs on v0.12.3

该报错通常出现在 Docker 方式部署 Open WebUI v0.12.3 时,容器以退出码 0 退出且日志为空,属于容器在 Open WebUI 启动脚本产生输出之前就结束的场景。优先排查宿主机的 Docker 运行方式与镜像启动配置,而不是直接判定为 Open WebUI 应用代码问题。

快速结论:该报错通常出现在 Docker 方式部署 Open WebUI v0.12.3 时,容器以退出码 0 退出且日志为空,属于容器在 Open WebUI 启动脚本产生输出之前就结束的场景。优先排查宿主机的 Docker 运行方式与镜像启动配置,而不是直接判定为 Open WebUI 应用代码问题。

适用环境:Open WebUI v0.12.3(对比正常版本 v0.12.0、v0.12.1、v0.12.2);安装方式 Docker;操作系统 Tahoe;Ollama v0.40.9;报告中提及 Apple silicon M3 与 Docker v4.96.3。其余 Python、CUDA、PyTorch、显卡信息 Issue 未提供。

最快修复方案:暂无确认的一步修复方案。Issue 中唯一被明确验证有效的处理是回滚到 v0.12.2 后正常运行;此外,提问者后续在前台运行 v0.12.3(不使用 -d 与 --restart)时容器可正常启动,说明该问题并非在所有环境下稳定复现。

注意事项:回滚到 v0.12.2 只是规避手段,并未定位 v0.12.3 在特定宿主机上的根因。维护者表示 v0.12.2 与 v0.12.3 的容器启动流程没有变化,且 v0.12.3、:main、:latest 由同一提交构建,因此在同一环境下不应出现其中某个版本正常、另一个失败的情况。前台运行有效也不能直接等同于 -d 加 --restart always 场景的问题已修复。

问题场景

用户通过 Docker 运行 ghcr.io/open-webui/open-webui:v0.12.3,映射 3000 到 8080 端口,挂载 open-webui:/app/backend/data,并设置 --restart always。容器启动后立即进入重启循环,状态显示为 Restarting (0) Less than a second ago,且没有任何日志输出。相同宿主机上 v0.12.0、v0.12.1、v0.12.2 可正常工作。用户还反馈使用 README 中的 :main 标签以及 :latest 标签同样失败。

报错原文

Restarting (0) Less than a second ago

exit=0 oom=false err=

原因分析

退出码为 0 且日志完全为空,说明容器在 Open WebUI 的启动脚本执行并写入 stdout/stderr 之前就已经结束。维护者指出启动脚本必然会先输出一条关于 WEBUI_SECRET_KEY 的信息,因此该现象更可能指向宿主机 Docker 环境或镜像启动路径,而非应用本身崩溃。

可能原因包括:宿主机 Docker Desktop 的运行行为差异、镜像架构与宿主机架构不匹配、容器入口点/命令配置异常,或宿主机的 Docker 环境导致容器进程未真正进入应用启动脚本。Issue 中未确认具体根因;相关 issue(#32901)仅确认 v0.12.3 在 Linux 上存在与运行时/事件循环相关的进程问题,与本次重启循环症状并不完全一致。

环境排查

  • 确认 Mac 芯片类型:Apple Silicon 还是 Intel,并与镜像架构对照检查。
  • 确认 Docker Desktop 版本,Issue 中报告的正常运行环境为 Docker v4.96.3(Apple silicon M3)。
  • 确认 Open WebUI 镜像标签:v0.12.3、:main、:latest。
  • 对比 v0.12.2 与 v0.12.3 镜像的 Config(entrypoint、cmd、env),排查启动配置是否变化。
  • 确认运行时是否使用 -d 与 --restart always,并分别测试前台运行与后台运行两种方式。
  • 确认 Ollama 版本为 v0.40.9,排除其与容器启动无关的干扰。

解决步骤

  1. 先按 Issue 中已验证的方式回滚到 v0.12.2,恢复可用状态:将启动命令中的镜像标签替换为 ghcr.io/open-webui/open-webui:v0.12.2,删除旧容器后重新运行。
  2. 对 v0.12.2 与 v0.12.3 镜像的 Config 做并排对比,重点看 entrypoint、cmd 与环境变量,确认启动入口是否有差异。
  3. 不使用 -d 和 --restart 做一次前台运行,保留退出后的容器,并查看 docker logs 与 docker inspect 中的退出码、OOM 状态、错误信息、入口路径与参数。
  4. 如果仍无输出,用同一镜像以 sh 作为入口打开交互式 shell,检查根目录、/app 目录、启动脚本内容及 1 号进程命令行,判断入口是否真正执行。
  5. 核对宿主机架构与镜像架构(例如 uname -m 与镜像的 .Architecture),排除架构不匹配导致进程异常退出的可能。
  6. 若需重开 Issue,按维护者要求提供:Mac 芯片类型与 Docker Desktop 版本、前台运行的完整输出、以及 docker inspect 的入口与参数输出。

验证方法

回滚到 v0.12.2 后,容器应能正常启动并保持运行,不再出现 Restarting (0)。对于 v0.12.3,以前台方式运行时若能输出启动脚本内容并保持服务运行,说明问题与后台运行或 --restart 相关;若仍以退出码 0 无日志结束,则需结合镜像 Config 对比与宿主机 Docker 环境进一步定位。

参考来源

open-webui/open-webui #32998

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 29748

发表回复

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