跳到主要内容

容器服务部署

在诸如 AWS ECS/Fargate、Azure Container Apps 或 Google Cloud Run 等托管容器平台上运行官方的 ghcr.io/open-webui/open-webui 镜像。

前提条件

在继续之前,请确保您已配置好共享基础设施组件要求——PostgreSQL、Redis、向量数据库、共享存储和内容提取服务。

何时选择此部署模式

  • 您希望获得容器带来的红利(不可变镜像、版本化部署、无需管理操作系统),但不想承受 Kubernetes 带来的复杂性。
  • 您的组织已经在使用某种托管容器平台。
  • 您需要极快的横向扩展能力,且仅需极低的运维开销。
  • 您更偏好使用平台原生的自动弹性伸缩托管基础设施。

架构图

镜像选择

请使用带有明确版本号的 Tag 标签以保证生产环境的稳定性:

ghcr.io/open-webui/open-webui:v0.x.x

请避免在生产环境中使用 :main 标签——它追踪的是最新的开发分支,可能会在不预警的情况下引入破坏性更改。请查看 Open WebUI 发布的 Releases 获取最新的稳定版本。

水平扩展策略

  • 平台原生自动伸缩:配置您的容器服务,使其根据 CPU 利用率、内存消耗或请求数来进行自动弹性伸缩。
  • 健康检查:使用 /health 接口来进行存活(Liveness)和就绪(Readiness)探针检查。
  • 任务级环境变量:在您的任务定义(Task definition)中,以环境变量或 Secret 秘钥的形式传递所有共享基础设施的配置。
  • 会话亲和性:在您的负载均衡器上启用粘性会话(Sticky sessions)以确保 WebSocket 的连接稳定性。虽然 Redis 可以处理实例间的协同工作,但启用会话亲和性能够极大减少不必要的会话交接。

关键注意事项

注意事项细节详情
持久化存储使用对象存储(S3, GCS, Azure Blob)或共享文件系统(如 EFS)。容器本地的文件存储是临时的,不会在不同的容器任务之间共享。
Tika 边车模式在同一个任务定义中将 Tika 作为边车(Sidecar)容器运行,或者作为独立的微服务运行。边车模式可以将文档提取的网络流量保持在本地。
Secret 秘钥管理使用您平台自带的秘钥管理器(AWS Secrets Manager, Azure Key Vault, GCP Secret Manager)来统一安全地管理 DATABASE_URLREDIS_URLWEBUI_SECRET_KEY 等敏感变量。
平滑升级进行滚动部署(Rolling deployment)时,应首先升级单个容器任务——该任务将专门运行数据迁移 (ENABLE_DB_MIGRATIONS=true)。一旦该任务健康就绪,再将其余任务扩展并设置为 ENABLE_DB_MIGRATIONS=false

应避免的反面模式

反面模式潜在破坏性影响推荐修复方案
使用本地 SQLite 数据库容器任务重启会导致数据丢失;多任务并发时会产生数据库死锁DATABASE_URL 设置为外部 PostgreSQL 数据库
使用默认的本地 ChromaDB在多进程访问下,基于 SQLite 的向量数据库极其容易发生崩溃设置 VECTOR_DB=pgvector(或接入外部 Milvus/Qdrant 数据库)
未统一 WEBUI_SECRET_KEY会导致用户登录陷入死循环、提示 401 报错、会话无法跨任务保持等问题通过秘钥管理器为每一个任务设置完全相同的密钥值
未配置 Redis 缓存服务会导致 WebSocket 连接故障、配置无法同步、“找不到模型(Model Not Found)”等错误配置 REDIS_URL 并设置 WEBSOCKET_MANAGER=redis

有关容器的一些基础知识,请参阅我们的 快速入门指南


在规划企业级部署时需要帮助? 我们的团队正与全球各地的组织紧密合作,设计并实施生产级的 Open WebUI 环境。

联系企业销售 → sales@openwebui.com

This content is for informational purposes only and does not constitute a warranty, guarantee, or contractual commitment. Open WebUI is provided "as is." See your license for applicable terms.