Slim image: allow STORAGE_PROVIDER=azure (add azure-storage-blob to requirements-slim.txt)

使用 slim 镜像( USE_SLIM=true )并设置 STORAGE_PROVIDER=azure 时,Open WebUI 会在加载存储提供者阶段失败,因为 slim 分支的判断逻辑只接受 local / s3,且 slim 依赖清单中没有 azure-storage-blob。优先确认你

快速结论:使用 slim 镜像(USE_SLIM=true)并设置 STORAGE_PROVIDER=azure 时,Open WebUI 会在加载存储提供者阶段失败,因为 slim 分支的判断逻辑只接受 local / s3,且 slim 依赖清单中没有 azure-storage-blob。优先确认你运行的镜像类型和依赖文件,再决定改用标准镜像或给 slim 镜像补上 Azure 存储依赖与 provider 判断。

适用环境:Open WebUI v0.12.3(Issue 作者验证的版本);使用 USE_SLIM=true 构建或运行 slim 镜像;拟使用 Azure Blob 作为对象存储(STORAGE_PROVIDER=azure);同时依赖 azure_openai 外部嵌入、pgvector、Redis 等部署组件。Issue 未说明操作系统、Python 版本、CUDA、显卡型号。

最快修复方案:暂无确认的一步修复方案。Issue 作者给出的是在 v0.12.3 上验证过的两处改动:在 backend/requirements-slim.txt 中加入与 requirements.txt 相同固定版本的 azure-storage-blob,并让 get_storage_provider 的 slim 检查允许 'azure'。

注意事项:这属于功能缺口而非单纯配置错误,仅设置环境变量无法绕过;自行修改依赖和源码意味着脱离官方 slim 镜像行为,后续升级需重新确认判断逻辑是否变化;Issue 中验证的仅是模块可导入,未覆盖 Azure Blob 实际上传、下载、删除的完整链路;修改前建议备份,并在测试环境先行验证。

问题场景

用户在 Open WebUI 中使用 slim 镜像(USE_SLIM=true,依赖清单为 backend/requirements-slim.txt),希望把文件存储切换到 Azure Blob,即设置 STORAGE_PROVIDER=azure。该部署整体上适合 slim 镜像(使用 azure_openai 做外部嵌入、pgvector 做向量库、Redis 做缓存),但启动或导入存储模块时被拒绝。Issue 作者指出该问题在 v0.12.3 上可复现,并检查 dev 分支时仍只允许 ('local', 's3')。

报错原文

Slim image: allow STORAGE_PROVIDER=azure (add azure-storage-blob to requirements-slim.txt)

`get_storage_provider` in `backend/open_webui/storage/provider.py` raises unless the provider is `local` or `s3`, and `azure-storage-blob` is not in `requirements-slim.txt`.

原因分析

最可能的原因是 slim 镜像在存储层做了裁剪:backend/open_webui/storage/provider.py 中的 get_storage_provider 在 slim 模式下只放行 local 和 s3,遇到 azure 会直接抛出异常;同时 backend/requirements-slim.txt 没有收录 azure-storage-blob,即使绕过判断也无法正常导入 Azure Blob 客户端。Issue 作者认为 Azure Blob 依赖体积小、是纯 Python 包,不像 slim 镜像裁掉的其他重型依赖,因此更适合作为 slim 的可选存储后端。

环境排查

  • 确认当前运行的是 slim 镜像还是标准镜像,是否设置了 USE_SLIM=true。
  • 确认 STORAGE_PROVIDER 的实际取值是否为 azure,以及是否同时配置了 Azure Blob 所需的连接参数。
  • 检查镜像内的 backend/requirements-slim.txt 是否包含 azure-storage-blob。
  • 检查 backend/open_webui/storage/provider.py 中 get_storage_provider 的允许列表;Issue 提到 dev 分支仍为 ('local', 's3')。
  • 核对 Open WebUI 版本,Issue 作者在 v0.12.3 上验证了改动效果;不要假设其他版本行为一致。
  • 确认 Python 环境与镜像依赖安装是否成功,可在容器内尝试导入 azure.storage.blob 和 open_webui.storage.provider。

解决步骤

  1. 先确认问题确实来自 slim 分支限制:在容器内查看 get_storage_provider 的 slim 判断是否只允许 local、s3,并确认 requirements-slim.txt 中缺少 azure-storage-blob。
  2. 若必须继续使用 slim 镜像(可优先尝试,Issue 作者验证过的改法):在 backend/requirements-slim.txt 中加入与 requirements.txt 相同固定版本的 azure-storage-blob==12.29.0。
  3. 在 get_storage_provider 的 slim 检查允许列表中加入 'azure',使 STORAGE_PROVIDER=azure 能通过判断。
  4. 重新构建 slim 镜像并部署,确保构建过程成功安装新增依赖。
  5. 若不想维护 fork 或自定义镜像,可评估改用标准镜像;代价是镜像体积明显增大(Issue 中对比为 slim 约 201 MB 压缩、标准约 1.68 GB,具体以你的构建结果为准)。
  6. 关注上游对 #30430 等同方向请求的处理进展,等待官方把 Azure 纳入 slim 支持范围后再移除本地补丁。

验证方法

在修改后的镜像中设置 STORAGE_PROVIDER=azure 并启动,观察启动日志不再因存储提供者判断而报错;在容器内执行对 open_webui.storage.provider 的导入,确认能正常加载。随后通过 Open WebUI 触发一次文件上传与下载,确认 Azure Blob 中能看到对应对象;这一步属于 Issue 未覆盖的验证项,需要自行确认。

参考来源

open-webui/open-webui #33010

open-webui/open-webui #30430(slim 镜像允许 s3 存储提供者的相关请求)

open-webui/open-webui #10204(Azure Storage 支持的相关请求)

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 29751

发表回复

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