ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

使用 docker compose 如何部署 Open WebUI 与独立 Ollama 容器并配置 OLLAMA_BASE_URL

使用 docker compose 如何部署 Open WebUI 与独立 Ollama 容器并配置 OLLAMA_BASE_URL 使用 docker compose 如何部署 Open WebUI 与独立 Ollama 容器并配置 OLLAMA_BASE_URL【免费下载链接】open-webuiUser-friendly AI Interface (Supports Ollama, OpenAI API, ...)项目地址: https://gitcode.com/GitHub_Trending/op/open-webui这篇文章解决一个具体任务在安装了 Docker 的主机上用 docker compose 同时跑起 Open WebUI 容器和一个独立的 Ollama 容器并让OLLAMA_BASE_URL正确指向 Ollama使 WebUI 能列出并调用 Ollama 中的模型。Open WebUI 仓库根目录自带了一份 docker-compose.yaml两个服务、卷和端口都已写好本文的操作路径就是基于它展开的。仓库自带的 compose 文件做了什么先读一遍 docker-compose.yaml它定义了三个部分ollama服务镜像ollama/ollama:${OLLAMA_DOCKER_TAG-latest}即默认latest挂载命名卷ollama:/root/.ollama持久化模型数据restart: unless-stopped。open-webui服务镜像ghcr.io/open-webui/open-webui:${WEBUI_DOCKER_TAG-main}即默认main挂载命名卷open-webui:/app/backend/data端口映射${OPEN_WEBUI_PORT-3000}:8080即默认主机端口 3000depends_on: ollama并声明了两个环境变量environment: - OLLAMA_BASE_URLhttp://ollama:11434 - WEBUI_SECRET_KEY extra_hosts: - host.docker.internal:host-gateway关键点在于OLLAMA_BASE_URLhttp://ollama:11434两个容器运行在同一个 compose 网络里可以用服务名ollama作为主机名直接访问所以这里不需要127.0.0.1或host.docker.internal。extra_hosts里的host.docker.internal:host-gateway是额外声明的宿主机可达别名供容器访问宿主机上的其他服务时使用。两个命名卷ollama和open-webui在文件末尾统一声明Docker 会在首次up时自动创建。README 里对 Docker 安装有一个明确警告必须保留-v open-webui:/app/backend/datacompose 文件中已包含这一数据卷否则数据库不会挂载存在数据丢失风险。启动 compose 项目最短主路径是直接运行仓库提供的 compose 文件docker compose up -d启动后按 README 的说法Open WebUI 可通过http://localhost:3000访问默认端口映射3000:8080。如果需要改端口通过环境变量OPEN_WEBUI_PORT覆盖默认值例如OPEN_WEBUI_PORT8080 docker compose up -d。仓库还提供了两个可选脚本属于替代路径docker-compose-launcher.sh交互式启动器支持--webui[port3000]改 WebUI 端口、--enable-gpu启用 GPU 透传额外加载 docker-compose.gpu.yaml、--enable-api[port11435]把 Ollama API 暴露到主机端口额外加载 docker-compose.api.yaml、--data[folder./ollama-data]把 Ollama 数据绑定挂载到宿主机目录额外加载 docker-compose.data.yaml。注意它的up命令带--force-recreate会重建已有容器--drop参数会执行docker compose down --remove-orphans停止并移除该项目容器运行前请确认。docker-ollama.sh单独拉取并运行ollama/ollama:latest容器容器名ollama端口默认11434:11434可用OLLAMA_PORT覆盖。副作用需要先了解它会执行docker rm -f ollama删除已存在同名容器并在结束时执行docker image prune -f清理悬空镜像。如果你已经用 compose 启了ollama服务不要直接跑这个脚本否则两者会争用同一个容器名。配置 OLLAMA_BASE_URLOLLAMA_BASE_URL决定 Open WebUI 后端把 Ollama 请求转发到哪里。仓库文档TROUBLESHOOTING.md解释了这套架构前端对 Ollama 的请求不是直连而是先发给 Open WebUI 后端的/ollama路由由后端再按OLLAMA_BASE_URL转发。文档给的例子WebUI 里一次对/ollama/api/tags的请求等价于后端向OLLAMA_BASE_URL/api/tags发起请求。按部署拓扑分三种取值均来自仓库文档Ollama 作为 compose 内的独立容器本文主路径保持 compose 文件中的默认值即可。- OLLAMA_BASE_URLhttp://ollama:11434这里的主机名是 compose 服务名不要改成localhost或127.0.0.1——在 open-webui 容器里那指向的是容器自身。Ollama 在另一台服务器README 给出的做法是把OLLAMA_BASE_URL改为该服务器的 URL文档示例为https://example.comexample.com是文档示例地址请替换为实际服务器地址docker run -d -p 3000:8080 -e OLLAMA_BASE_URLhttps://example.com -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main这条是 README 中的docker run单容器示例如果你的 Ollama 是独立服务而非 compose 服务等价做法是把 docker-compose.yaml 中open-webui服务的OLLAMA_BASE_URL改成同样的服务器 URL并删除ollama服务定义和depends_on。Ollama 作为宿主机进程而非容器README 与 TROUBLESHOOTING 说明当容器无法访问127.0.0.1:11434时可用--networkhost让容器直接使用宿主机网络并把OLLAMA_BASE_URL设为http://127.0.0.1:11434。文档给出的示例命令docker run场景docker run -d --networkhost -v open-webui:/app/backend/data -e OLLAMA_BASE_URLhttp://127.0.0.1:11434 --name open-webui --restart always ghcr.io/open-webui/open-webui:main注意此时端口映射失效访问地址从http://localhost:3000变为http://localhost:8080。此外Open WebUI 的界面里也能核对同一项配置进入 Settings General确认 Ollama Server URL 与你期望的地址一致TROUBLESHOOTING 中的排查步骤 1。验证连接是否打通文档给出的验证路径有两条都与上面的转发架构对应打开http://localhost:3000确认 Open WebUI 界面可以访问README 说明启动后的访问地址。利用 TROUBLESHOOTING 描述的路由等价关系WebUI 中的/ollama/api/tags请求等价于后端向OLLAMA_BASE_URL/api/tags发起请求。也就是说界面里获取 Ollama 模型列表的动作走的就是这条转发链路如果模型列表能正常返回说明OLLAMA_BASE_URL指向的 Ollama 实例可达。若列表为空或报错按 TROUBLESHOOTING 的顺序核对OLLAMA_BASE_URL的地址格式是否正确文档示例不同主机场景下应为类似http://192.168.1.1:11434的完整 URL以及 Ollama 是否保持较新版本。连接错误与已知限制容器够不到 127.0.0.1:11434 的连接问题这是 TROUBLESHOOTING 记载的典型现象原因是 open-webui 容器内的127.0.0.1指向容器自身。在 compose 双容器拓扑下用服务名http://ollama:11434规避在docker run单容器 宿主机 Ollama 的拓扑下用--networkhost规避访问端口随之变为 8080。Ollama 响应慢被超时中断Open WebUI 对 Ollama 生成响应的默认超时是 5 分钟可通过环境变量AIOHTTP_CLIENT_TIMEOUT单位秒调整。需要把 Ollama API 暴露给 compose 栈之外默认 compose 文件没有为ollama服务映射主机端口。仓库提供 docker-compose.api.yaml 覆盖文件把${OLLAMA_WEBAPI_PORT-11434}:11434映射出来默认端口 11434配合启动脚本则用--enable-api[portPORT]。想把 Ollama 数据放到宿主机目录而非命名卷使用 docker-compose.data.yaml把${OLLAMA_DATA_DIR-./ollama-data}绑定挂载到/root/.ollama配合启动脚本则用--data[folderPATH]。compose 文件还声明了WEBUI_SECRET_KEY默认为空文件本身未解释其取值要求设置时请另行参阅项目文档不要凭空填写。完成上述步骤后一次可核对的结果是docker compose ps能看到ollama与open-webui两个容器处于运行状态http://localhost:3000可以打开且界面内 Ollama 模型列表走/ollama转发路由能够返回数据。若任一步骤失败回到 TROUBLESHOOTING 的两条检查——OLLAMA_BASE_URL格式与 Ollama 版本——逐项核对。【免费下载链接】open-webuiUser-friendly AI Interface (Supports Ollama, OpenAI API, ...)项目地址: https://gitcode.com/GitHub_Trending/op/open-webui创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表