diff --git a/frameworks/open-webui/0.8.3/Dockerfile b/frameworks/open-webui/0.8.3/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..edfb1de78422d4214ce337037f613be54ec9c54b --- /dev/null +++ b/frameworks/open-webui/0.8.3/Dockerfile @@ -0,0 +1,44 @@ +FROM opencloudos/opencloudos9-minimal:latest + +LABEL maintainer="OpenCloudOS Community" +LABEL org.opencontainers.image.source="https://gitee.com/OpenCloudOS/ai-agent-container" +LABEL org.opencontainers.image.description="Open WebUI on OpenCloudOS 9" + +# 安装系统依赖及 Python 环境 +RUN dnf install -y \ + git \ + gcc \ + make \ + gcc-c++ \ + pandoc \ + nmap-ncat \ + curl \ + jq \ + ffmpeg \ + libSM \ + libXext \ + zstd \ + python3-pip \ + python3-devel \ + && dnf clean all \ + && rm -rf /var/cache/yum/* + +# 安装 open-webui(pip 包含预构建前端) +# 使用 pip3 直接安装,配置 PyPI 官方源+腾讯云镜像备选 +RUN pip3 install --no-cache-dir --timeout 600 --retries 10 \ + --index-url https://mirrors.cloud.tencent.com/pypi/simple/ \ + --trusted-host mirrors.cloud.tencent.com \ + --extra-index-url https://pypi.org/simple/ \ + open-webui==0.8.3 + +# 数据持久化 +ENV DATA_DIR=/app/backend/data +RUN mkdir -p /app/backend/data + +WORKDIR /app/backend + +EXPOSE 8080 + +RUN echo $(date +"%Y-%m-%dT%H:%M:%S%z") > /opencloudos_build_date.txt + +CMD ["open-webui", "serve"] diff --git a/frameworks/open-webui/0.8.3/README.md b/frameworks/open-webui/0.8.3/README.md new file mode 100644 index 0000000000000000000000000000000000000000..5aef4f58a721c73315bee956b8ffc632edf5417e --- /dev/null +++ b/frameworks/open-webui/0.8.3/README.md @@ -0,0 +1,76 @@ +# Open WebUI on OpenCloudOS 9 + +## 基本信息 +- **框架版本**:v0.8.3 +- **基础镜像**:opencloudos9-minimal:latest +- **Python 版本**:3.11 +- **CUDA 版本**:N/A(CPU 模式) +- **默认端口**:8080 + +## 构建 + +```bash +docker build -t oc9-open-webui:0.8.3 . +``` + +## 使用示例 + +### 基本启动 + +```bash +docker run -d -p 3000:8080 \ + -v open-webui:/app/backend/data \ + --name open-webui \ + --restart always \ + oc9-open-webui:0.8.3 +``` + +### 连接 Ollama(同机部署) + +```bash +docker run -d -p 3000:8080 \ + --add-host=host.docker.internal:host-gateway \ + -v open-webui:/app/backend/data \ + --name open-webui \ + --restart always \ + oc9-open-webui:0.8.3 +``` + +### 连接 OpenAI API + +```bash +docker run -d -p 3000:8080 \ + -e OPENAI_API_KEY=your_api_key \ + -v open-webui:/app/backend/data \ + --name open-webui \ + --restart always \ + oc9-open-webui:0.8.3 +``` + +### 连接远程 Ollama + +```bash +docker run -d -p 3000:8080 \ + -e OLLAMA_BASE_URL=https://your-ollama-server:11434 \ + -v open-webui:/app/backend/data \ + --name open-webui \ + --restart always \ + oc9-open-webui:0.8.3 +``` + +启动后访问 `http://localhost:3000` 即可使用。 + +## 测试验证 + +```bash +bash test.sh oc9-open-webui:0.8.3 +``` + +测试脚本会验证以下内容: +- open_webui 模块可正常导入 +- FastAPI 核心依赖可用 +- Web 服务可正常启动并响应 + +## 已知问题 +- 首次启动时需要下载嵌入模型(sentence-transformers/all-MiniLM-L6-v2),建议确保网络畅通或提前配置离线模型路径。 +- CPU 模式下 RAG 嵌入和语音识别(Whisper)速度较慢,如需加速可切换 CUDA 基础镜像。 diff --git a/frameworks/open-webui/0.8.3/build.conf b/frameworks/open-webui/0.8.3/build.conf new file mode 100644 index 0000000000000000000000000000000000000000..af3f66c5bef2b4f0cac9680ddcdcc70140b74a82 --- /dev/null +++ b/frameworks/open-webui/0.8.3/build.conf @@ -0,0 +1,4 @@ +# open-webui 0.8.3 on OpenCloudOS 9 +IMAGE_NAME=oc9-open-webui +IMAGE_TAG=0.8.3 +GPU_TEST=false diff --git a/frameworks/open-webui/0.8.3/test.sh b/frameworks/open-webui/0.8.3/test.sh new file mode 100755 index 0000000000000000000000000000000000000000..13923df9f916852c5eed4d0949fe9bd9fd7e6b54 --- /dev/null +++ b/frameworks/open-webui/0.8.3/test.sh @@ -0,0 +1,48 @@ +#!/bin/bash +set -e + +IMAGE="${1:?ERROR: 缺少镜像参数。用法: bash test.sh }" + +echo "=== Open WebUI 功能测试 ===" + +# 1. 验证 open-webui 可正常导入 +echo -n "检查 open_webui import... " +docker run --rm "$IMAGE" python3 -c " +import open_webui +print('open_webui import 成功') +" && echo "✓ 通过" || { echo "✗ 失败"; exit 1; } + +# 2. 验证核心依赖 +echo -n "检查核心依赖 (fastapi)... " +docker run --rm "$IMAGE" python3 -c " +import fastapi +print(f'FastAPI {fastapi.__version__}') +" && echo "✓ 通过" || { echo "✗ 失败"; exit 1; } + +# 3. 验证 Web 服务可启动(后台启动,检测端口后退出) +echo -n "检查 Web 服务启动... " +docker run --rm -d --name openwebui-test -p 8080:8080 "$IMAGE" > /dev/null 2>&1 + +# 确保脚本退出时一定清理容器 +cleanup_container() { + docker stop openwebui-test > /dev/null 2>&1 || true +} +trap cleanup_container EXIT + +SUCCESS=0 +for i in {1..12}; do + sleep 15 + if curl -sf http://localhost:8080 > /dev/null 2>&1; then + SUCCESS=1 + break + fi +done + +if [ "$SUCCESS" -eq 1 ]; then + echo "✓ 通过" +else + echo "✗ 失败(服务未响应)" + exit 1 +fi + +echo "=== 所有测试通过 ==="