diff --git "a/frameworks/fastgpt/4.14.10.1/4.14.10.1\346\236\204\345\273\272\345\217\212\346\265\213\350\257\225\346\210\252\345\233\276.png" "b/frameworks/fastgpt/4.14.10.1/4.14.10.1\346\236\204\345\273\272\345\217\212\346\265\213\350\257\225\346\210\252\345\233\276.png" new file mode 100644 index 0000000000000000000000000000000000000000..26a97254e15b7d9a4becdc9edf0e4d124596f6ec Binary files /dev/null and "b/frameworks/fastgpt/4.14.10.1/4.14.10.1\346\236\204\345\273\272\345\217\212\346\265\213\350\257\225\346\210\252\345\233\276.png" differ diff --git a/frameworks/fastgpt/4.14.10.1/Dockerfile b/frameworks/fastgpt/4.14.10.1/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..12fcd67ae29001af7f49a1c07120d079b8f9344b --- /dev/null +++ b/frameworks/fastgpt/4.14.10.1/Dockerfile @@ -0,0 +1,73 @@ +# 基础镜像:OpenCloudOS 9 极简版(FastGPT 为 Next.js Web 应用,从源码构建) +FROM opencloudos/opencloudos9-minimal:latest + +# 镜像元信息 +LABEL maintainer="pangxb666" +LABEL org.opencontainers.image.source="https://gitee.com/OpenCloudOS/ai-agent-container" +LABEL org.opencontainers.image.description="FastGPT 4.14.10.1 on OpenCloudOS 9" + +ARG FASTGPT_VERSION=4.14.10.1 +ARG NODE_VERSION=20.18.1 +# TARGETARCH 由 BuildKit 自动注入:amd64 / arm64 / ... +ARG TARGETARCH + +# 安装系统依赖:git/curl/tar/xz/ca-certificates,并清理缓存 +RUN dnf install -y --nogpgcheck \ + git \ + curl \ + tar \ + xz \ + ca-certificates \ + && dnf clean all \ + && rm -rf /var/cache/yum/* + +# 根据目标架构自动选择对应的 Node.js 官方二进制(linux-x64 / linux-arm64) +# 同时确保动态链接器路径存在(minimal 镜像 /lib64 可能缺失,建立符号链接以兼容 qemu user-mode 模拟) +RUN set -eux; \ + case "${TARGETARCH:-amd64}" in \ + amd64) NODE_ARCH="x64" ;; \ + arm64) NODE_ARCH="arm64" ;; \ + *) echo "ERROR: 不支持的架构 TARGETARCH=${TARGETARCH}"; exit 1 ;; \ + esac; \ + echo "构建目标架构: ${TARGETARCH}, 下载 Node.js linux-${NODE_ARCH}"; \ + [ -e /lib64 ] || ln -s /usr/lib64 /lib64; \ + curl -fsSL "https://mirrors.tuna.tsinghua.edu.cn/nodejs-release/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-${NODE_ARCH}.tar.xz" \ + -o /tmp/node.tar.xz; \ + tar -xJf /tmp/node.tar.xz -C /usr/local --strip-components=1; \ + rm -f /tmp/node.tar.xz; \ + node --version; \ + npm --version; \ + npm config set registry https://registry.npmmirror.com; \ + npm install -g pnpm@9 + +# 拉取指定版本源码 +# 默认走 ghfast.top 代理加速国内访问 GitHub,离境构建可通过 --build-arg GIT_PROXY="" 关闭 +ARG GIT_PROXY=https://ghfast.top/ +WORKDIR /app +RUN git config --global http.lowSpeedLimit 1000 \ + && git config --global http.lowSpeedTime 60 \ + && git config --global http.postBuffer 524288000 \ + && git clone --depth=1 --branch "v${FASTGPT_VERSION}" \ + "${GIT_PROXY}https://github.com/labring/FastGPT.git" /tmp/fastgpt \ + && cp -a /tmp/fastgpt/. /app/ \ + && rm -rf /tmp/fastgpt + +# 安装依赖(使用 npmmirror 加速) +RUN pnpm install --registry=https://registry.npmmirror.com + +# 构建 app 子项目(Next.js standalone 输出) +ENV NODE_OPTIONS="--max-old-space-size=4096" +RUN pnpm --filter=app build + +# 运行时环境变量 +ENV NODE_ENV=production +ENV NEXT_TELEMETRY_DISABLED=1 +ENV PORT=3000 +EXPOSE 3000 + +# 记录镜像构建时间,便于追溯 +RUN echo $(date +"%Y-%m-%dT%H:%M:%S%z") > /opencloudos_build_date.txt + +# 默认从 standalone 输出启动 Next.js 服务 +WORKDIR /app/projects/app +CMD ["node", ".next/standalone/projects/app/server.js"] diff --git a/frameworks/fastgpt/4.14.10.1/README.md b/frameworks/fastgpt/4.14.10.1/README.md new file mode 100644 index 0000000000000000000000000000000000000000..9f98af692653fd4062ddc1f9f423905d7cf88fb8 --- /dev/null +++ b/frameworks/fastgpt/4.14.10.1/README.md @@ -0,0 +1,60 @@ +# FastGPT 4.14.10.1 on OpenCloudOS 9 + +## 基本信息 + +- **框架版本**:4.14.10.1 +- **基础镜像**:opencloudos/opencloudos9-minimal:latest +- **Node.js 版本**:20.18.1(按 TARGETARCH 自动选择 linux-x64 / linux-arm64) +- **CUDA 版本**:N/A +- **开源地址**:https://github.com/labring/FastGPT + +## 简介 + +FastGPT 是 labring 开源的基于 LLM 的 RAG 知识库问答与 AI 工作流编排平台,主项目为 Next.js + TypeScript Monorepo(pnpm workspace)。本镜像在 OpenCloudOS 9 上从源码构建 `projects/app`(Next.js standalone 输出),运行依赖 MongoDB、PostgreSQL+pgvector 等外部服务(生产环境通过 docker-compose 编排)。 + +## 构建 + +```bash +# 默认按宿主机架构构建(推荐) +docker build -t oc9-fastgpt:4.14.10.1 . + +# 显式指定目标架构(适用于跨架构构建) +docker buildx build --platform linux/amd64 -t oc9-fastgpt:4.14.10.1 . --load +docker buildx build --platform linux/arm64 -t oc9-fastgpt:4.14.10.1-arm64 . --load +``` + +> 提示:FastGPT 是 monorepo 项目,构建过程包含 `pnpm install` 和 `pnpm --filter=app build`,国内网络下首次构建预计 15-30 分钟,最终镜像体积较大(GB 级)。 + +## 使用示例 + +```bash +# 1. 验证镜像可启动 + 检查 Next.js standalone 产物存在 +bash test.sh oc9-fastgpt:4.14.10.1 + +# 2. 完整运行(需自备 MongoDB + PostgreSQL+pgvector) +docker run -d --name fastgpt -p 3000:3000 \ + -e MONGODB_URI="mongodb://:@:27017/fastgpt?authSource=admin" \ + -e PG_URL="postgresql://:@:5432/postgres" \ + -e CHAT_API_KEY="" \ + -v $(pwd)/config.json:/app/data/config.json \ + oc9-fastgpt:4.14.10.1 +``` + +更完整的部署方式(含 MongoDB / PG / MinIO / Redis 编排)参见 FastGPT 官方文档: + +## 测试环境 + +镜像已在以下两种架构验证通过: + +| 架构 | 操作系统 | 内核 | Docker | 状态 | +|------|---------|------|--------|------| +| x86_64 (amd64) | Ubuntu 22.04.4 LTS (Jammy) | 5.15.0-113-generic | 29.4.1 | ✓ 通过 | +| arm64 (aarch64) | macOS (Apple Silicon) | Darwin 25.x | Docker Desktop | ✓ 通过(开发自测) | + +构建时 `Dockerfile` 通过 BuildKit 注入的 `TARGETARCH` 自动选择对应的 Node.js 二进制(`linux-x64` / `linux-arm64`),同一份 Dockerfile 可在两种架构原生构建。 + +## 已知问题 + +- 单容器无 MongoDB/PostgreSQL 时,启动后会因连不上 DB 而退出,属预期行为;本镜像 `test.sh` 仅做启动产物校验,不做完整服务可用性测试。 +- 由于 monorepo 体积较大,构建时建议为 Docker 分配 ≥ 8GB 内存。 +- macOS Apple Silicon 上若以 `--platform=linux/amd64` 构建会走 qemu 模拟,速度慢且偶现兼容性问题;本机原生 `linux/arm64` 构建可正常完成,CI 仍以 `linux/amd64` 为准。 diff --git a/frameworks/fastgpt/4.14.10.1/build.conf b/frameworks/fastgpt/4.14.10.1/build.conf new file mode 100644 index 0000000000000000000000000000000000000000..3fcdadd4477f283c68ba1cd5ba388ae2d5ef076b --- /dev/null +++ b/frameworks/fastgpt/4.14.10.1/build.conf @@ -0,0 +1,4 @@ +# FastGPT 4.14.10.1 on OpenCloudOS 9 +IMAGE_NAME=oc9-fastgpt +IMAGE_TAG=4.14.10.1 +GPU_TEST=false diff --git a/frameworks/fastgpt/4.14.10.1/test.sh b/frameworks/fastgpt/4.14.10.1/test.sh new file mode 100755 index 0000000000000000000000000000000000000000..d8ddc473ed3a18a5f60c447e897fef5b5ce5219a --- /dev/null +++ b/frameworks/fastgpt/4.14.10.1/test.sh @@ -0,0 +1,34 @@ +#!/bin/bash +set -e + +IMAGE="${1:?ERROR: 缺少镜像参数。用法: bash test.sh }" +EXPECTED_VERSION="4.14.10.1" + +echo "=== FastGPT ${EXPECTED_VERSION} 基础功能测试 ===" + +# 1. 验证 Node.js 运行时 +echo -n "检查 Node.js 运行时... " +sudo docker run --rm "$IMAGE" node --version && echo "✓ 通过" || { echo "✗ 失败"; exit 1; } + +# 2. 验证 package.json 存在并打印版本(FastGPT 内部 version 字段可能滞后于 git tag,仅打印不强校验) +echo -n "检查 package.json 版本字段... " +sudo docker run --rm "$IMAGE" node -e " +const pkg = require('/app/package.json'); +console.log('package.json version:', pkg.version); +if (!pkg.version) { console.error('版本字段缺失'); process.exit(1); } +" && echo "✓ 通过" || { echo "✗ 失败"; exit 1; } + +# 3. 验证 Next.js standalone 构建产物存在 +echo -n "检查 Next.js standalone 构建产物... " +sudo docker run --rm "$IMAGE" sh -c " +test -f /app/projects/app/.next/standalone/projects/app/server.js \ + && test -d /app/projects/app/.next/static \ + && echo 'standalone server.js + static 已生成' +" && echo "✓ 通过" || { echo "✗ 失败"; exit 1; } + +# 4. 验证 server.js 可被 Node.js 解析(语法层面冒烟测试,不实际监听) +echo -n "检查 server.js 可加载(语法)... " +sudo docker run --rm "$IMAGE" node --check /app/projects/app/.next/standalone/projects/app/server.js \ + && echo "✓ 通过" || { echo "✗ 失败"; exit 1; } + +echo "=== 所有测试通过 ===" diff --git "a/frameworks/fastgpt/4.14.10.2/4.14.10.2\346\236\204\345\273\272\345\217\212\346\265\213\350\257\225\346\210\252\345\233\276.png" "b/frameworks/fastgpt/4.14.10.2/4.14.10.2\346\236\204\345\273\272\345\217\212\346\265\213\350\257\225\346\210\252\345\233\276.png" new file mode 100644 index 0000000000000000000000000000000000000000..f5bf8887f227e3fa6ed1b85c22c74f3e1af6317e Binary files /dev/null and "b/frameworks/fastgpt/4.14.10.2/4.14.10.2\346\236\204\345\273\272\345\217\212\346\265\213\350\257\225\346\210\252\345\233\276.png" differ diff --git a/frameworks/fastgpt/4.14.10.2/Dockerfile b/frameworks/fastgpt/4.14.10.2/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..5861b86f24faac17a49fbf2775b06c6eadbc34c7 --- /dev/null +++ b/frameworks/fastgpt/4.14.10.2/Dockerfile @@ -0,0 +1,73 @@ +# 基础镜像:OpenCloudOS 9 极简版(FastGPT 为 Next.js Web 应用,从源码构建) +FROM opencloudos/opencloudos9-minimal:latest + +# 镜像元信息 +LABEL maintainer="pangxb666" +LABEL org.opencontainers.image.source="https://gitee.com/OpenCloudOS/ai-agent-container" +LABEL org.opencontainers.image.description="FastGPT 4.14.10.2 on OpenCloudOS 9" + +ARG FASTGPT_VERSION=4.14.10.2 +ARG NODE_VERSION=20.18.1 +# TARGETARCH 由 BuildKit 自动注入:amd64 / arm64 / ... +ARG TARGETARCH + +# 安装系统依赖:git/curl/tar/xz/ca-certificates,并清理缓存 +RUN dnf install -y --nogpgcheck \ + git \ + curl \ + tar \ + xz \ + ca-certificates \ + && dnf clean all \ + && rm -rf /var/cache/yum/* + +# 根据目标架构自动选择对应的 Node.js 官方二进制(linux-x64 / linux-arm64) +# 同时确保动态链接器路径存在(minimal 镜像 /lib64 可能缺失,建立符号链接以兼容 qemu user-mode 模拟) +RUN set -eux; \ + case "${TARGETARCH:-amd64}" in \ + amd64) NODE_ARCH="x64" ;; \ + arm64) NODE_ARCH="arm64" ;; \ + *) echo "ERROR: 不支持的架构 TARGETARCH=${TARGETARCH}"; exit 1 ;; \ + esac; \ + echo "构建目标架构: ${TARGETARCH}, 下载 Node.js linux-${NODE_ARCH}"; \ + [ -e /lib64 ] || ln -s /usr/lib64 /lib64; \ + curl -fsSL "https://mirrors.tuna.tsinghua.edu.cn/nodejs-release/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-${NODE_ARCH}.tar.xz" \ + -o /tmp/node.tar.xz; \ + tar -xJf /tmp/node.tar.xz -C /usr/local --strip-components=1; \ + rm -f /tmp/node.tar.xz; \ + node --version; \ + npm --version; \ + npm config set registry https://registry.npmmirror.com; \ + npm install -g pnpm@9 + +# 拉取指定版本源码 +# 默认走 ghfast.top 代理加速国内访问 GitHub,离境构建可通过 --build-arg GIT_PROXY="" 关闭 +ARG GIT_PROXY=https://ghfast.top/ +WORKDIR /app +RUN git config --global http.lowSpeedLimit 1000 \ + && git config --global http.lowSpeedTime 60 \ + && git config --global http.postBuffer 524288000 \ + && git clone --depth=1 --branch "v${FASTGPT_VERSION}" \ + "${GIT_PROXY}https://github.com/labring/FastGPT.git" /tmp/fastgpt \ + && cp -a /tmp/fastgpt/. /app/ \ + && rm -rf /tmp/fastgpt + +# 安装依赖(使用 npmmirror 加速) +RUN pnpm install --registry=https://registry.npmmirror.com + +# 构建 app 子项目(Next.js standalone 输出) +ENV NODE_OPTIONS="--max-old-space-size=4096" +RUN pnpm --filter=app build + +# 运行时环境变量 +ENV NODE_ENV=production +ENV NEXT_TELEMETRY_DISABLED=1 +ENV PORT=3000 +EXPOSE 3000 + +# 记录镜像构建时间,便于追溯 +RUN echo $(date +"%Y-%m-%dT%H:%M:%S%z") > /opencloudos_build_date.txt + +# 默认从 standalone 输出启动 Next.js 服务 +WORKDIR /app/projects/app +CMD ["node", ".next/standalone/projects/app/server.js"] diff --git a/frameworks/fastgpt/4.14.10.2/README.md b/frameworks/fastgpt/4.14.10.2/README.md new file mode 100644 index 0000000000000000000000000000000000000000..bf053ee0618bc9b9e9d3b80d7548b58acccf9a13 --- /dev/null +++ b/frameworks/fastgpt/4.14.10.2/README.md @@ -0,0 +1,60 @@ +# FastGPT 4.14.10.2 on OpenCloudOS 9 + +## 基本信息 + +- **框架版本**:4.14.10.2 +- **基础镜像**:opencloudos/opencloudos9-minimal:latest +- **Node.js 版本**:20.18.1(按 TARGETARCH 自动选择 linux-x64 / linux-arm64) +- **CUDA 版本**:N/A +- **开源地址**:https://github.com/labring/FastGPT + +## 简介 + +FastGPT 是 labring 开源的基于 LLM 的 RAG 知识库问答与 AI 工作流编排平台,主项目为 Next.js + TypeScript Monorepo(pnpm workspace)。本镜像在 OpenCloudOS 9 上从源码构建 `projects/app`(Next.js standalone 输出),运行依赖 MongoDB、PostgreSQL+pgvector 等外部服务(生产环境通过 docker-compose 编排)。 + +## 构建 + +```bash +# 默认按宿主机架构构建(推荐) +docker build -t oc9-fastgpt:4.14.10.2 . + +# 显式指定目标架构(适用于跨架构构建) +docker buildx build --platform linux/amd64 -t oc9-fastgpt:4.14.10.2 . --load +docker buildx build --platform linux/arm64 -t oc9-fastgpt:4.14.10.2-arm64 . --load +``` + +> 提示:FastGPT 是 monorepo 项目,构建过程包含 `pnpm install` 和 `pnpm --filter=app build`,国内网络下首次构建预计 15-30 分钟,最终镜像体积较大(GB 级)。 + +## 使用示例 + +```bash +# 1. 验证镜像可启动 + 检查 Next.js standalone 产物存在 +bash test.sh oc9-fastgpt:4.14.10.2 + +# 2. 完整运行(需自备 MongoDB + PostgreSQL+pgvector) +docker run -d --name fastgpt -p 3000:3000 \ + -e MONGODB_URI="mongodb://:@:27017/fastgpt?authSource=admin" \ + -e PG_URL="postgresql://:@:5432/postgres" \ + -e CHAT_API_KEY="" \ + -v $(pwd)/config.json:/app/data/config.json \ + oc9-fastgpt:4.14.10.2 +``` + +更完整的部署方式(含 MongoDB / PG / MinIO / Redis 编排)参见 FastGPT 官方文档: + +## 测试环境 + +镜像已在以下两种架构验证通过: + +| 架构 | 操作系统 | 内核 | Docker | 状态 | +|------|---------|------|--------|------| +| x86_64 (amd64) | Ubuntu 22.04.4 LTS (Jammy) | 5.15.0-113-generic | 29.4.1 | ✓ 通过 | +| arm64 (aarch64) | macOS (Apple Silicon) | Darwin 25.x | Docker Desktop | ✓ 通过(开发自测) | + +构建时 `Dockerfile` 通过 BuildKit 注入的 `TARGETARCH` 自动选择对应的 Node.js 二进制(`linux-x64` / `linux-arm64`),同一份 Dockerfile 可在两种架构原生构建。 + +## 已知问题 + +- 单容器无 MongoDB/PostgreSQL 时,启动后会因连不上 DB 而退出,属预期行为;本镜像 `test.sh` 仅做启动产物校验,不做完整服务可用性测试。 +- 由于 monorepo 体积较大,构建时建议为 Docker 分配 ≥ 8GB 内存。 +- macOS Apple Silicon 上若以 `--platform=linux/amd64` 构建会走 qemu 模拟,速度慢且偶现兼容性问题;本机原生 `linux/arm64` 构建可正常完成,CI 仍以 `linux/amd64` 为准。 diff --git a/frameworks/fastgpt/4.14.10.2/build.conf b/frameworks/fastgpt/4.14.10.2/build.conf new file mode 100644 index 0000000000000000000000000000000000000000..8e7b77e3f61222ec1e077ff3e5f51b1a7ae2f031 --- /dev/null +++ b/frameworks/fastgpt/4.14.10.2/build.conf @@ -0,0 +1,4 @@ +# FastGPT 4.14.10.2 on OpenCloudOS 9 +IMAGE_NAME=oc9-fastgpt +IMAGE_TAG=4.14.10.2 +GPU_TEST=false diff --git a/frameworks/fastgpt/4.14.10.2/test.sh b/frameworks/fastgpt/4.14.10.2/test.sh new file mode 100755 index 0000000000000000000000000000000000000000..e7b216f493992198aa73b95d3d61fd79bf36851d --- /dev/null +++ b/frameworks/fastgpt/4.14.10.2/test.sh @@ -0,0 +1,34 @@ +#!/bin/bash +set -e + +IMAGE="${1:?ERROR: 缺少镜像参数。用法: bash test.sh }" +EXPECTED_VERSION="4.14.10.2" + +echo "=== FastGPT ${EXPECTED_VERSION} 基础功能测试 ===" + +# 1. 验证 Node.js 运行时 +echo -n "检查 Node.js 运行时... " +sudo docker run --rm "$IMAGE" node --version && echo "✓ 通过" || { echo "✗ 失败"; exit 1; } + +# 2. 验证 package.json 存在并打印版本(FastGPT 内部 version 字段可能滞后于 git tag,仅打印不强校验) +echo -n "检查 package.json 版本字段... " +sudo docker run --rm "$IMAGE" node -e " +const pkg = require('/app/package.json'); +console.log('package.json version:', pkg.version); +if (!pkg.version) { console.error('版本字段缺失'); process.exit(1); } +" && echo "✓ 通过" || { echo "✗ 失败"; exit 1; } + +# 3. 验证 Next.js standalone 构建产物存在 +echo -n "检查 Next.js standalone 构建产物... " +sudo docker run --rm "$IMAGE" sh -c " +test -f /app/projects/app/.next/standalone/projects/app/server.js \ + && test -d /app/projects/app/.next/static \ + && echo 'standalone server.js + static 已生成' +" && echo "✓ 通过" || { echo "✗ 失败"; exit 1; } + +# 4. 验证 server.js 可被 Node.js 解析(语法层面冒烟测试,不实际监听) +echo -n "检查 server.js 可加载(语法)... " +sudo docker run --rm "$IMAGE" node --check /app/projects/app/.next/standalone/projects/app/server.js \ + && echo "✓ 通过" || { echo "✗ 失败"; exit 1; } + +echo "=== 所有测试通过 ===" diff --git "a/frameworks/fastgpt/4.14.10.3/4.14.10.3\346\236\204\345\273\272\345\217\212\346\265\213\350\257\225\346\210\252\345\233\276.png" "b/frameworks/fastgpt/4.14.10.3/4.14.10.3\346\236\204\345\273\272\345\217\212\346\265\213\350\257\225\346\210\252\345\233\276.png" new file mode 100644 index 0000000000000000000000000000000000000000..c7d9ba149b2d38d1d31e5328d5b7befbc30aa440 Binary files /dev/null and "b/frameworks/fastgpt/4.14.10.3/4.14.10.3\346\236\204\345\273\272\345\217\212\346\265\213\350\257\225\346\210\252\345\233\276.png" differ diff --git a/frameworks/fastgpt/4.14.10.3/Dockerfile b/frameworks/fastgpt/4.14.10.3/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..13ddaeca543db5984d6b8fa8117370c32d16e82e --- /dev/null +++ b/frameworks/fastgpt/4.14.10.3/Dockerfile @@ -0,0 +1,73 @@ +# 基础镜像:OpenCloudOS 9 极简版(FastGPT 为 Next.js Web 应用,从源码构建) +FROM opencloudos/opencloudos9-minimal:latest + +# 镜像元信息 +LABEL maintainer="pangxb666" +LABEL org.opencontainers.image.source="https://gitee.com/OpenCloudOS/ai-agent-container" +LABEL org.opencontainers.image.description="FastGPT 4.14.10.3 on OpenCloudOS 9" + +ARG FASTGPT_VERSION=4.14.10.3 +ARG NODE_VERSION=20.18.1 +# TARGETARCH 由 BuildKit 自动注入:amd64 / arm64 / ... +ARG TARGETARCH + +# 安装系统依赖:git/curl/tar/xz/ca-certificates,并清理缓存 +RUN dnf install -y --nogpgcheck \ + git \ + curl \ + tar \ + xz \ + ca-certificates \ + && dnf clean all \ + && rm -rf /var/cache/yum/* + +# 根据目标架构自动选择对应的 Node.js 官方二进制(linux-x64 / linux-arm64) +# 同时确保动态链接器路径存在(minimal 镜像 /lib64 可能缺失,建立符号链接以兼容 qemu user-mode 模拟) +RUN set -eux; \ + case "${TARGETARCH:-amd64}" in \ + amd64) NODE_ARCH="x64" ;; \ + arm64) NODE_ARCH="arm64" ;; \ + *) echo "ERROR: 不支持的架构 TARGETARCH=${TARGETARCH}"; exit 1 ;; \ + esac; \ + echo "构建目标架构: ${TARGETARCH}, 下载 Node.js linux-${NODE_ARCH}"; \ + [ -e /lib64 ] || ln -s /usr/lib64 /lib64; \ + curl -fsSL "https://mirrors.tuna.tsinghua.edu.cn/nodejs-release/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-${NODE_ARCH}.tar.xz" \ + -o /tmp/node.tar.xz; \ + tar -xJf /tmp/node.tar.xz -C /usr/local --strip-components=1; \ + rm -f /tmp/node.tar.xz; \ + node --version; \ + npm --version; \ + npm config set registry https://registry.npmmirror.com; \ + npm install -g pnpm@9 + +# 拉取指定版本源码 +# 默认走 ghfast.top 代理加速国内访问 GitHub,离境构建可通过 --build-arg GIT_PROXY="" 关闭 +ARG GIT_PROXY=https://ghfast.top/ +WORKDIR /app +RUN git config --global http.lowSpeedLimit 1000 \ + && git config --global http.lowSpeedTime 60 \ + && git config --global http.postBuffer 524288000 \ + && git clone --depth=1 --branch "v${FASTGPT_VERSION}" \ + "${GIT_PROXY}https://github.com/labring/FastGPT.git" /tmp/fastgpt \ + && cp -a /tmp/fastgpt/. /app/ \ + && rm -rf /tmp/fastgpt + +# 安装依赖(使用 npmmirror 加速) +RUN pnpm install --registry=https://registry.npmmirror.com + +# 构建 app 子项目(Next.js standalone 输出) +ENV NODE_OPTIONS="--max-old-space-size=4096" +RUN pnpm --filter=app build + +# 运行时环境变量 +ENV NODE_ENV=production +ENV NEXT_TELEMETRY_DISABLED=1 +ENV PORT=3000 +EXPOSE 3000 + +# 记录镜像构建时间,便于追溯 +RUN echo $(date +"%Y-%m-%dT%H:%M:%S%z") > /opencloudos_build_date.txt + +# 默认从 standalone 输出启动 Next.js 服务 +WORKDIR /app/projects/app +CMD ["node", ".next/standalone/projects/app/server.js"] diff --git a/frameworks/fastgpt/4.14.10.3/README.md b/frameworks/fastgpt/4.14.10.3/README.md new file mode 100644 index 0000000000000000000000000000000000000000..e33522a23f43a1556b464c9d67e8ece737d71179 --- /dev/null +++ b/frameworks/fastgpt/4.14.10.3/README.md @@ -0,0 +1,60 @@ +# FastGPT 4.14.10.3 on OpenCloudOS 9 + +## 基本信息 + +- **框架版本**:4.14.10.3 +- **基础镜像**:opencloudos/opencloudos9-minimal:latest +- **Node.js 版本**:20.18.1(按 TARGETARCH 自动选择 linux-x64 / linux-arm64) +- **CUDA 版本**:N/A +- **开源地址**:https://github.com/labring/FastGPT + +## 简介 + +FastGPT 是 labring 开源的基于 LLM 的 RAG 知识库问答与 AI 工作流编排平台,主项目为 Next.js + TypeScript Monorepo(pnpm workspace)。本镜像在 OpenCloudOS 9 上从源码构建 `projects/app`(Next.js standalone 输出),运行依赖 MongoDB、PostgreSQL+pgvector 等外部服务(生产环境通过 docker-compose 编排)。 + +## 构建 + +```bash +# 默认按宿主机架构构建(推荐) +docker build -t oc9-fastgpt:4.14.10.3 . + +# 显式指定目标架构(适用于跨架构构建) +docker buildx build --platform linux/amd64 -t oc9-fastgpt:4.14.10.3 . --load +docker buildx build --platform linux/arm64 -t oc9-fastgpt:4.14.10.3-arm64 . --load +``` + +> 提示:FastGPT 是 monorepo 项目,构建过程包含 `pnpm install` 和 `pnpm --filter=app build`,国内网络下首次构建预计 15-30 分钟,最终镜像体积较大(GB 级)。 + +## 使用示例 + +```bash +# 1. 验证镜像可启动 + 检查 Next.js standalone 产物存在 +bash test.sh oc9-fastgpt:4.14.10.3 + +# 2. 完整运行(需自备 MongoDB + PostgreSQL+pgvector) +docker run -d --name fastgpt -p 3000:3000 \ + -e MONGODB_URI="mongodb://:@:27017/fastgpt?authSource=admin" \ + -e PG_URL="postgresql://:@:5432/postgres" \ + -e CHAT_API_KEY="" \ + -v $(pwd)/config.json:/app/data/config.json \ + oc9-fastgpt:4.14.10.3 +``` + +更完整的部署方式(含 MongoDB / PG / MinIO / Redis 编排)参见 FastGPT 官方文档: + +## 测试环境 + +镜像已在以下两种架构验证通过: + +| 架构 | 操作系统 | 内核 | Docker | 状态 | +|------|---------|------|--------|------| +| x86_64 (amd64) | Ubuntu 22.04.4 LTS (Jammy) | 5.15.0-113-generic | 29.4.1 | ✓ 通过 | +| arm64 (aarch64) | macOS (Apple Silicon) | Darwin 25.x | Docker Desktop | ✓ 通过(开发自测) | + +构建时 `Dockerfile` 通过 BuildKit 注入的 `TARGETARCH` 自动选择对应的 Node.js 二进制(`linux-x64` / `linux-arm64`),同一份 Dockerfile 可在两种架构原生构建。 + +## 已知问题 + +- 单容器无 MongoDB/PostgreSQL 时,启动后会因连不上 DB 而退出,属预期行为;本镜像 `test.sh` 仅做启动产物校验,不做完整服务可用性测试。 +- 由于 monorepo 体积较大,构建时建议为 Docker 分配 ≥ 8GB 内存。 +- macOS Apple Silicon 上若以 `--platform=linux/amd64` 构建会走 qemu 模拟,速度慢且偶现兼容性问题;本机原生 `linux/arm64` 构建可正常完成,CI 仍以 `linux/amd64` 为准。 diff --git a/frameworks/fastgpt/4.14.10.3/build.conf b/frameworks/fastgpt/4.14.10.3/build.conf new file mode 100644 index 0000000000000000000000000000000000000000..26950c2a6bdaefcd4d4b64131d48c4a24aa1ef63 --- /dev/null +++ b/frameworks/fastgpt/4.14.10.3/build.conf @@ -0,0 +1,4 @@ +# FastGPT 4.14.10.3 on OpenCloudOS 9 +IMAGE_NAME=oc9-fastgpt +IMAGE_TAG=4.14.10.3 +GPU_TEST=false diff --git a/frameworks/fastgpt/4.14.10.3/test.sh b/frameworks/fastgpt/4.14.10.3/test.sh new file mode 100755 index 0000000000000000000000000000000000000000..1ab443436ab5f52f590b016cff40b68fb4169f41 --- /dev/null +++ b/frameworks/fastgpt/4.14.10.3/test.sh @@ -0,0 +1,34 @@ +#!/bin/bash +set -e + +IMAGE="${1:?ERROR: 缺少镜像参数。用法: bash test.sh }" +EXPECTED_VERSION="4.14.10.3" + +echo "=== FastGPT ${EXPECTED_VERSION} 基础功能测试 ===" + +# 1. 验证 Node.js 运行时 +echo -n "检查 Node.js 运行时... " +sudo docker run --rm "$IMAGE" node --version && echo "✓ 通过" || { echo "✗ 失败"; exit 1; } + +# 2. 验证 package.json 存在并打印版本(FastGPT 内部 version 字段可能滞后于 git tag,仅打印不强校验) +echo -n "检查 package.json 版本字段... " +sudo docker run --rm "$IMAGE" node -e " +const pkg = require('/app/package.json'); +console.log('package.json version:', pkg.version); +if (!pkg.version) { console.error('版本字段缺失'); process.exit(1); } +" && echo "✓ 通过" || { echo "✗ 失败"; exit 1; } + +# 3. 验证 Next.js standalone 构建产物存在 +echo -n "检查 Next.js standalone 构建产物... " +sudo docker run --rm "$IMAGE" sh -c " +test -f /app/projects/app/.next/standalone/projects/app/server.js \ + && test -d /app/projects/app/.next/static \ + && echo 'standalone server.js + static 已生成' +" && echo "✓ 通过" || { echo "✗ 失败"; exit 1; } + +# 4. 验证 server.js 可被 Node.js 解析(语法层面冒烟测试,不实际监听) +echo -n "检查 server.js 可加载(语法)... " +sudo docker run --rm "$IMAGE" node --check /app/projects/app/.next/standalone/projects/app/server.js \ + && echo "✓ 通过" || { echo "✗ 失败"; exit 1; } + +echo "=== 所有测试通过 ===" diff --git "a/frameworks/fastgpt/4.14.10/4.14.10\346\236\204\345\273\272\345\217\212\346\265\213\350\257\225\346\210\252\345\233\276.png" "b/frameworks/fastgpt/4.14.10/4.14.10\346\236\204\345\273\272\345\217\212\346\265\213\350\257\225\346\210\252\345\233\276.png" new file mode 100644 index 0000000000000000000000000000000000000000..2bb4fa45b9824562ad7410ee2b9bc2ffd5632a3a Binary files /dev/null and "b/frameworks/fastgpt/4.14.10/4.14.10\346\236\204\345\273\272\345\217\212\346\265\213\350\257\225\346\210\252\345\233\276.png" differ diff --git a/frameworks/fastgpt/4.14.10/Dockerfile b/frameworks/fastgpt/4.14.10/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..929ce232df6ae35017ad420dfdfa52d3f0085fb4 --- /dev/null +++ b/frameworks/fastgpt/4.14.10/Dockerfile @@ -0,0 +1,73 @@ +# 基础镜像:OpenCloudOS 9 极简版(FastGPT 为 Next.js Web 应用,从源码构建) +FROM opencloudos/opencloudos9-minimal:latest + +# 镜像元信息 +LABEL maintainer="pangxb666" +LABEL org.opencontainers.image.source="https://gitee.com/OpenCloudOS/ai-agent-container" +LABEL org.opencontainers.image.description="FastGPT 4.14.10 on OpenCloudOS 9" + +ARG FASTGPT_VERSION=4.14.10 +ARG NODE_VERSION=20.18.1 +# TARGETARCH 由 BuildKit 自动注入:amd64 / arm64 / ... +ARG TARGETARCH + +# 安装系统依赖:git/curl/tar/xz/ca-certificates,并清理缓存 +RUN dnf install -y --nogpgcheck \ + git \ + curl \ + tar \ + xz \ + ca-certificates \ + && dnf clean all \ + && rm -rf /var/cache/yum/* + +# 根据目标架构自动选择对应的 Node.js 官方二进制(linux-x64 / linux-arm64) +# 同时确保动态链接器路径存在(minimal 镜像 /lib64 可能缺失,建立符号链接以兼容 qemu user-mode 模拟) +RUN set -eux; \ + case "${TARGETARCH:-amd64}" in \ + amd64) NODE_ARCH="x64" ;; \ + arm64) NODE_ARCH="arm64" ;; \ + *) echo "ERROR: 不支持的架构 TARGETARCH=${TARGETARCH}"; exit 1 ;; \ + esac; \ + echo "构建目标架构: ${TARGETARCH}, 下载 Node.js linux-${NODE_ARCH}"; \ + [ -e /lib64 ] || ln -s /usr/lib64 /lib64; \ + curl -fsSL "https://mirrors.tuna.tsinghua.edu.cn/nodejs-release/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-${NODE_ARCH}.tar.xz" \ + -o /tmp/node.tar.xz; \ + tar -xJf /tmp/node.tar.xz -C /usr/local --strip-components=1; \ + rm -f /tmp/node.tar.xz; \ + node --version; \ + npm --version; \ + npm config set registry https://registry.npmmirror.com; \ + npm install -g pnpm@9 + +# 拉取指定版本源码 +# 默认走 ghfast.top 代理加速国内访问 GitHub,离境构建可通过 --build-arg GIT_PROXY="" 关闭 +ARG GIT_PROXY=https://ghfast.top/ +WORKDIR /app +RUN git config --global http.lowSpeedLimit 1000 \ + && git config --global http.lowSpeedTime 60 \ + && git config --global http.postBuffer 524288000 \ + && git clone --depth=1 --branch "v${FASTGPT_VERSION}" \ + "${GIT_PROXY}https://github.com/labring/FastGPT.git" /tmp/fastgpt \ + && cp -a /tmp/fastgpt/. /app/ \ + && rm -rf /tmp/fastgpt + +# 安装依赖(使用 npmmirror 加速) +RUN pnpm install --registry=https://registry.npmmirror.com + +# 构建 app 子项目(Next.js standalone 输出) +ENV NODE_OPTIONS="--max-old-space-size=4096" +RUN pnpm --filter=app build + +# 运行时环境变量 +ENV NODE_ENV=production +ENV NEXT_TELEMETRY_DISABLED=1 +ENV PORT=3000 +EXPOSE 3000 + +# 记录镜像构建时间,便于追溯 +RUN echo $(date +"%Y-%m-%dT%H:%M:%S%z") > /opencloudos_build_date.txt + +# 默认从 standalone 输出启动 Next.js 服务 +WORKDIR /app/projects/app +CMD ["node", ".next/standalone/projects/app/server.js"] diff --git a/frameworks/fastgpt/4.14.10/README.md b/frameworks/fastgpt/4.14.10/README.md new file mode 100644 index 0000000000000000000000000000000000000000..79db27fd9f997aeaa40b324f2f9a4a133ae8d000 --- /dev/null +++ b/frameworks/fastgpt/4.14.10/README.md @@ -0,0 +1,60 @@ +# FastGPT 4.14.10 on OpenCloudOS 9 + +## 基本信息 + +- **框架版本**:4.14.10 +- **基础镜像**:opencloudos/opencloudos9-minimal:latest +- **Node.js 版本**:20.18.1(按 TARGETARCH 自动选择 linux-x64 / linux-arm64) +- **CUDA 版本**:N/A +- **开源地址**:https://github.com/labring/FastGPT + +## 简介 + +FastGPT 是 labring 开源的基于 LLM 的 RAG 知识库问答与 AI 工作流编排平台,主项目为 Next.js + TypeScript Monorepo(pnpm workspace)。本镜像在 OpenCloudOS 9 上从源码构建 `projects/app`(Next.js standalone 输出),运行依赖 MongoDB、PostgreSQL+pgvector 等外部服务(生产环境通过 docker-compose 编排)。 + +## 构建 + +```bash +# 默认按宿主机架构构建(推荐) +docker build -t oc9-fastgpt:4.14.10 . + +# 显式指定目标架构(适用于跨架构构建) +docker buildx build --platform linux/amd64 -t oc9-fastgpt:4.14.10 . --load +docker buildx build --platform linux/arm64 -t oc9-fastgpt:4.14.10-arm64 . --load +``` + +> 提示:FastGPT 是 monorepo 项目,构建过程包含 `pnpm install` 和 `pnpm --filter=app build`,国内网络下首次构建预计 15-30 分钟,最终镜像体积较大(GB 级)。 + +## 使用示例 + +```bash +# 1. 验证镜像可启动 + 检查 Next.js standalone 产物存在 +bash test.sh oc9-fastgpt:4.14.10 + +# 2. 完整运行(需自备 MongoDB + PostgreSQL+pgvector) +docker run -d --name fastgpt -p 3000:3000 \ + -e MONGODB_URI="mongodb://:@:27017/fastgpt?authSource=admin" \ + -e PG_URL="postgresql://:@:5432/postgres" \ + -e CHAT_API_KEY="" \ + -v $(pwd)/config.json:/app/data/config.json \ + oc9-fastgpt:4.14.10 +``` + +更完整的部署方式(含 MongoDB / PG / MinIO / Redis 编排)参见 FastGPT 官方文档: + +## 测试环境 + +镜像已在以下两种架构验证通过: + +| 架构 | 操作系统 | 内核 | Docker | 状态 | +|------|---------|------|--------|------| +| x86_64 (amd64) | Ubuntu 22.04.4 LTS (Jammy) | 5.15.0-113-generic | 29.4.1 | ✓ 通过 | +| arm64 (aarch64) | macOS (Apple Silicon) | Darwin 25.x | Docker Desktop | ✓ 通过(开发自测) | + +构建时 `Dockerfile` 通过 BuildKit 注入的 `TARGETARCH` 自动选择对应的 Node.js 二进制(`linux-x64` / `linux-arm64`),同一份 Dockerfile 可在两种架构原生构建。 + +## 已知问题 + +- 单容器无 MongoDB/PostgreSQL 时,启动后会因连不上 DB 而退出,属预期行为;本镜像 `test.sh` 仅做启动产物校验,不做完整服务可用性测试。 +- 由于 monorepo 体积较大,构建时建议为 Docker 分配 ≥ 8GB 内存。 +- macOS Apple Silicon 上若以 `--platform=linux/amd64` 构建会走 qemu 模拟,速度慢且偶现兼容性问题;本机原生 `linux/arm64` 构建可正常完成,CI 仍以 `linux/amd64` 为准。 diff --git a/frameworks/fastgpt/4.14.10/build.conf b/frameworks/fastgpt/4.14.10/build.conf new file mode 100644 index 0000000000000000000000000000000000000000..9d0d4c5dbcc351cb9491efb561129c8b114461fb --- /dev/null +++ b/frameworks/fastgpt/4.14.10/build.conf @@ -0,0 +1,4 @@ +# FastGPT 4.14.10 on OpenCloudOS 9 +IMAGE_NAME=oc9-fastgpt +IMAGE_TAG=4.14.10 +GPU_TEST=false diff --git a/frameworks/fastgpt/4.14.10/test.sh b/frameworks/fastgpt/4.14.10/test.sh new file mode 100755 index 0000000000000000000000000000000000000000..eec242e7bc7607ac59db8a64af4aa1ba8c6cec14 --- /dev/null +++ b/frameworks/fastgpt/4.14.10/test.sh @@ -0,0 +1,34 @@ +#!/bin/bash +set -e + +IMAGE="${1:?ERROR: 缺少镜像参数。用法: bash test.sh }" +EXPECTED_VERSION="4.14.10" + +echo "=== FastGPT ${EXPECTED_VERSION} 基础功能测试 ===" + +# 1. 验证 Node.js 运行时 +echo -n "检查 Node.js 运行时... " +sudo docker run --rm "$IMAGE" node --version && echo "✓ 通过" || { echo "✗ 失败"; exit 1; } + +# 2. 验证 package.json 存在并打印版本(FastGPT 内部 version 字段可能滞后于 git tag,仅打印不强校验) +echo -n "检查 package.json 版本字段... " +sudo docker run --rm "$IMAGE" node -e " +const pkg = require('/app/package.json'); +console.log('package.json version:', pkg.version); +if (!pkg.version) { console.error('版本字段缺失'); process.exit(1); } +" && echo "✓ 通过" || { echo "✗ 失败"; exit 1; } + +# 3. 验证 Next.js standalone 构建产物存在 +echo -n "检查 Next.js standalone 构建产物... " +sudo docker run --rm "$IMAGE" sh -c " +test -f /app/projects/app/.next/standalone/projects/app/server.js \ + && test -d /app/projects/app/.next/static \ + && echo 'standalone server.js + static 已生成' +" && echo "✓ 通过" || { echo "✗ 失败"; exit 1; } + +# 4. 验证 server.js 可被 Node.js 解析(语法层面冒烟测试,不实际监听) +echo -n "检查 server.js 可加载(语法)... " +sudo docker run --rm "$IMAGE" node --check /app/projects/app/.next/standalone/projects/app/server.js \ + && echo "✓ 通过" || { echo "✗ 失败"; exit 1; } + +echo "=== 所有测试通过 ===" diff --git "a/frameworks/fastgpt/4.14.9.3/4.14.9.3\346\236\204\345\273\272\345\217\212\346\265\213\350\257\225\346\210\252\345\233\276.png" "b/frameworks/fastgpt/4.14.9.3/4.14.9.3\346\236\204\345\273\272\345\217\212\346\265\213\350\257\225\346\210\252\345\233\276.png" new file mode 100644 index 0000000000000000000000000000000000000000..c21b051c41aa5bbbb6c8c3ed1239d93483d02937 Binary files /dev/null and "b/frameworks/fastgpt/4.14.9.3/4.14.9.3\346\236\204\345\273\272\345\217\212\346\265\213\350\257\225\346\210\252\345\233\276.png" differ diff --git a/frameworks/fastgpt/4.14.9.3/Dockerfile b/frameworks/fastgpt/4.14.9.3/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..76053c2e044408f73263d80b672f35779a472fde --- /dev/null +++ b/frameworks/fastgpt/4.14.9.3/Dockerfile @@ -0,0 +1,73 @@ +# 基础镜像:OpenCloudOS 9 极简版(FastGPT 为 Next.js Web 应用,从源码构建) +FROM opencloudos/opencloudos9-minimal:latest + +# 镜像元信息 +LABEL maintainer="pangxb666" +LABEL org.opencontainers.image.source="https://gitee.com/OpenCloudOS/ai-agent-container" +LABEL org.opencontainers.image.description="FastGPT 4.14.9.3 on OpenCloudOS 9" + +ARG FASTGPT_VERSION=4.14.9.3 +ARG NODE_VERSION=20.18.1 +# TARGETARCH 由 BuildKit 自动注入:amd64 / arm64 / ... +ARG TARGETARCH + +# 安装系统依赖:git/curl/tar/xz/ca-certificates,并清理缓存 +RUN dnf install -y --nogpgcheck \ + git \ + curl \ + tar \ + xz \ + ca-certificates \ + && dnf clean all \ + && rm -rf /var/cache/yum/* + +# 根据目标架构自动选择对应的 Node.js 官方二进制(linux-x64 / linux-arm64) +# 同时确保动态链接器路径存在(minimal 镜像 /lib64 可能缺失,建立符号链接以兼容 qemu user-mode 模拟) +RUN set -eux; \ + case "${TARGETARCH:-amd64}" in \ + amd64) NODE_ARCH="x64" ;; \ + arm64) NODE_ARCH="arm64" ;; \ + *) echo "ERROR: 不支持的架构 TARGETARCH=${TARGETARCH}"; exit 1 ;; \ + esac; \ + echo "构建目标架构: ${TARGETARCH}, 下载 Node.js linux-${NODE_ARCH}"; \ + [ -e /lib64 ] || ln -s /usr/lib64 /lib64; \ + curl -fsSL "https://mirrors.tuna.tsinghua.edu.cn/nodejs-release/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-${NODE_ARCH}.tar.xz" \ + -o /tmp/node.tar.xz; \ + tar -xJf /tmp/node.tar.xz -C /usr/local --strip-components=1; \ + rm -f /tmp/node.tar.xz; \ + node --version; \ + npm --version; \ + npm config set registry https://registry.npmmirror.com; \ + npm install -g pnpm@9 + +# 拉取指定版本源码 +# 默认走 ghfast.top 代理加速国内访问 GitHub,离境构建可通过 --build-arg GIT_PROXY="" 关闭 +ARG GIT_PROXY=https://ghfast.top/ +WORKDIR /app +RUN git config --global http.lowSpeedLimit 1000 \ + && git config --global http.lowSpeedTime 60 \ + && git config --global http.postBuffer 524288000 \ + && git clone --depth=1 --branch "v${FASTGPT_VERSION}" \ + "${GIT_PROXY}https://github.com/labring/FastGPT.git" /tmp/fastgpt \ + && cp -a /tmp/fastgpt/. /app/ \ + && rm -rf /tmp/fastgpt + +# 安装依赖(使用 npmmirror 加速) +RUN pnpm install --registry=https://registry.npmmirror.com + +# 构建 app 子项目(Next.js standalone 输出) +ENV NODE_OPTIONS="--max-old-space-size=4096" +RUN pnpm --filter=app build + +# 运行时环境变量 +ENV NODE_ENV=production +ENV NEXT_TELEMETRY_DISABLED=1 +ENV PORT=3000 +EXPOSE 3000 + +# 记录镜像构建时间,便于追溯 +RUN echo $(date +"%Y-%m-%dT%H:%M:%S%z") > /opencloudos_build_date.txt + +# 默认从 standalone 输出启动 Next.js 服务 +WORKDIR /app/projects/app +CMD ["node", ".next/standalone/projects/app/server.js"] diff --git a/frameworks/fastgpt/4.14.9.3/README.md b/frameworks/fastgpt/4.14.9.3/README.md new file mode 100644 index 0000000000000000000000000000000000000000..899bf22faa5ecc0c52a62ba7142173d06fa09c3d --- /dev/null +++ b/frameworks/fastgpt/4.14.9.3/README.md @@ -0,0 +1,60 @@ +# FastGPT 4.14.9.3 on OpenCloudOS 9 + +## 基本信息 + +- **框架版本**:4.14.9.3 +- **基础镜像**:opencloudos/opencloudos9-minimal:latest +- **Node.js 版本**:20.18.1(按 TARGETARCH 自动选择 linux-x64 / linux-arm64) +- **CUDA 版本**:N/A +- **开源地址**:https://github.com/labring/FastGPT + +## 简介 + +FastGPT 是 labring 开源的基于 LLM 的 RAG 知识库问答与 AI 工作流编排平台,主项目为 Next.js + TypeScript Monorepo(pnpm workspace)。本镜像在 OpenCloudOS 9 上从源码构建 `projects/app`(Next.js standalone 输出),运行依赖 MongoDB、PostgreSQL+pgvector 等外部服务(生产环境通过 docker-compose 编排)。 + +## 构建 + +```bash +# 默认按宿主机架构构建(推荐) +docker build -t oc9-fastgpt:4.14.9.3 . + +# 显式指定目标架构(适用于跨架构构建) +docker buildx build --platform linux/amd64 -t oc9-fastgpt:4.14.9.3 . --load +docker buildx build --platform linux/arm64 -t oc9-fastgpt:4.14.9.3-arm64 . --load +``` + +> 提示:FastGPT 是 monorepo 项目,构建过程包含 `pnpm install` 和 `pnpm --filter=app build`,国内网络下首次构建预计 15-30 分钟,最终镜像体积较大(GB 级)。 + +## 使用示例 + +```bash +# 1. 验证镜像可启动 + 检查 Next.js standalone 产物存在 +bash test.sh oc9-fastgpt:4.14.9.3 + +# 2. 完整运行(需自备 MongoDB + PostgreSQL+pgvector) +docker run -d --name fastgpt -p 3000:3000 \ + -e MONGODB_URI="mongodb://:@:27017/fastgpt?authSource=admin" \ + -e PG_URL="postgresql://:@:5432/postgres" \ + -e CHAT_API_KEY="" \ + -v $(pwd)/config.json:/app/data/config.json \ + oc9-fastgpt:4.14.9.3 +``` + +更完整的部署方式(含 MongoDB / PG / MinIO / Redis 编排)参见 FastGPT 官方文档: + +## 测试环境 + +镜像已在以下两种架构验证通过: + +| 架构 | 操作系统 | 内核 | Docker | 状态 | +|------|---------|------|--------|------| +| x86_64 (amd64) | Ubuntu 22.04.4 LTS (Jammy) | 5.15.0-113-generic | 29.4.1 | ✓ 通过 | +| arm64 (aarch64) | macOS (Apple Silicon) | Darwin 25.x | Docker Desktop | ✓ 通过(开发自测) | + +构建时 `Dockerfile` 通过 BuildKit 注入的 `TARGETARCH` 自动选择对应的 Node.js 二进制(`linux-x64` / `linux-arm64`),同一份 Dockerfile 可在两种架构原生构建。 + +## 已知问题 + +- 单容器无 MongoDB/PostgreSQL 时,启动后会因连不上 DB 而退出,属预期行为;本镜像 `test.sh` 仅做启动产物校验,不做完整服务可用性测试。 +- 由于 monorepo 体积较大,构建时建议为 Docker 分配 ≥ 8GB 内存。 +- macOS Apple Silicon 上若以 `--platform=linux/amd64` 构建会走 qemu 模拟,速度慢且偶现兼容性问题;本机原生 `linux/arm64` 构建可正常完成,CI 仍以 `linux/amd64` 为准。 diff --git a/frameworks/fastgpt/4.14.9.3/build.conf b/frameworks/fastgpt/4.14.9.3/build.conf new file mode 100644 index 0000000000000000000000000000000000000000..0c4df11577ecb482067fc074dd8cee920560dfc3 --- /dev/null +++ b/frameworks/fastgpt/4.14.9.3/build.conf @@ -0,0 +1,4 @@ +# FastGPT 4.14.9.3 on OpenCloudOS 9 +IMAGE_NAME=oc9-fastgpt +IMAGE_TAG=4.14.9.3 +GPU_TEST=false diff --git a/frameworks/fastgpt/4.14.9.3/test.sh b/frameworks/fastgpt/4.14.9.3/test.sh new file mode 100755 index 0000000000000000000000000000000000000000..ea3d6d52184be59d3b4f0e98e45ff3e6e15b9721 --- /dev/null +++ b/frameworks/fastgpt/4.14.9.3/test.sh @@ -0,0 +1,34 @@ +#!/bin/bash +set -e + +IMAGE="${1:?ERROR: 缺少镜像参数。用法: bash test.sh }" +EXPECTED_VERSION="4.14.9.3" + +echo "=== FastGPT ${EXPECTED_VERSION} 基础功能测试 ===" + +# 1. 验证 Node.js 运行时 +echo -n "检查 Node.js 运行时... " +sudo docker run --rm "$IMAGE" node --version && echo "✓ 通过" || { echo "✗ 失败"; exit 1; } + +# 2. 验证 package.json 存在并打印版本(FastGPT 内部 version 字段可能滞后于 git tag,仅打印不强校验) +echo -n "检查 package.json 版本字段... " +sudo docker run --rm "$IMAGE" node -e " +const pkg = require('/app/package.json'); +console.log('package.json version:', pkg.version); +if (!pkg.version) { console.error('版本字段缺失'); process.exit(1); } +" && echo "✓ 通过" || { echo "✗ 失败"; exit 1; } + +# 3. 验证 Next.js standalone 构建产物存在 +echo -n "检查 Next.js standalone 构建产物... " +sudo docker run --rm "$IMAGE" sh -c " +test -f /app/projects/app/.next/standalone/projects/app/server.js \ + && test -d /app/projects/app/.next/static \ + && echo 'standalone server.js + static 已生成' +" && echo "✓ 通过" || { echo "✗ 失败"; exit 1; } + +# 4. 验证 server.js 可被 Node.js 解析(语法层面冒烟测试,不实际监听) +echo -n "检查 server.js 可加载(语法)... " +sudo docker run --rm "$IMAGE" node --check /app/projects/app/.next/standalone/projects/app/server.js \ + && echo "✓ 通过" || { echo "✗ 失败"; exit 1; } + +echo "=== 所有测试通过 ===" diff --git "a/frameworks/fastgpt/4.14.9.4/4.14.9.4\346\236\204\345\273\272\345\217\212\346\265\213\350\257\225\346\210\252\345\233\276.png" "b/frameworks/fastgpt/4.14.9.4/4.14.9.4\346\236\204\345\273\272\345\217\212\346\265\213\350\257\225\346\210\252\345\233\276.png" new file mode 100644 index 0000000000000000000000000000000000000000..a2998d5e97ac52128ebf7c6dc12a97d70cd491ec Binary files /dev/null and "b/frameworks/fastgpt/4.14.9.4/4.14.9.4\346\236\204\345\273\272\345\217\212\346\265\213\350\257\225\346\210\252\345\233\276.png" differ diff --git a/frameworks/fastgpt/4.14.9.4/Dockerfile b/frameworks/fastgpt/4.14.9.4/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..ad1348ef69c86ba0243dad1df3db134b14ee8e13 --- /dev/null +++ b/frameworks/fastgpt/4.14.9.4/Dockerfile @@ -0,0 +1,73 @@ +# 基础镜像:OpenCloudOS 9 极简版(FastGPT 为 Next.js Web 应用,从源码构建) +FROM opencloudos/opencloudos9-minimal:latest + +# 镜像元信息 +LABEL maintainer="pangxb666" +LABEL org.opencontainers.image.source="https://gitee.com/OpenCloudOS/ai-agent-container" +LABEL org.opencontainers.image.description="FastGPT 4.14.9.4 on OpenCloudOS 9" + +ARG FASTGPT_VERSION=4.14.9.4 +ARG NODE_VERSION=20.18.1 +# TARGETARCH 由 BuildKit 自动注入:amd64 / arm64 / ... +ARG TARGETARCH + +# 安装系统依赖:git/curl/tar/xz/ca-certificates,并清理缓存 +RUN dnf install -y --nogpgcheck \ + git \ + curl \ + tar \ + xz \ + ca-certificates \ + && dnf clean all \ + && rm -rf /var/cache/yum/* + +# 根据目标架构自动选择对应的 Node.js 官方二进制(linux-x64 / linux-arm64) +# 同时确保动态链接器路径存在(minimal 镜像 /lib64 可能缺失,建立符号链接以兼容 qemu user-mode 模拟) +RUN set -eux; \ + case "${TARGETARCH:-amd64}" in \ + amd64) NODE_ARCH="x64" ;; \ + arm64) NODE_ARCH="arm64" ;; \ + *) echo "ERROR: 不支持的架构 TARGETARCH=${TARGETARCH}"; exit 1 ;; \ + esac; \ + echo "构建目标架构: ${TARGETARCH}, 下载 Node.js linux-${NODE_ARCH}"; \ + [ -e /lib64 ] || ln -s /usr/lib64 /lib64; \ + curl -fsSL "https://mirrors.tuna.tsinghua.edu.cn/nodejs-release/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-${NODE_ARCH}.tar.xz" \ + -o /tmp/node.tar.xz; \ + tar -xJf /tmp/node.tar.xz -C /usr/local --strip-components=1; \ + rm -f /tmp/node.tar.xz; \ + node --version; \ + npm --version; \ + npm config set registry https://registry.npmmirror.com; \ + npm install -g pnpm@9 + +# 拉取指定版本源码 +# 默认走 ghfast.top 代理加速国内访问 GitHub,离境构建可通过 --build-arg GIT_PROXY="" 关闭 +ARG GIT_PROXY=https://ghfast.top/ +WORKDIR /app +RUN git config --global http.lowSpeedLimit 1000 \ + && git config --global http.lowSpeedTime 60 \ + && git config --global http.postBuffer 524288000 \ + && git clone --depth=1 --branch "v${FASTGPT_VERSION}" \ + "${GIT_PROXY}https://github.com/labring/FastGPT.git" /tmp/fastgpt \ + && cp -a /tmp/fastgpt/. /app/ \ + && rm -rf /tmp/fastgpt + +# 安装依赖(使用 npmmirror 加速) +RUN pnpm install --registry=https://registry.npmmirror.com + +# 构建 app 子项目(Next.js standalone 输出) +ENV NODE_OPTIONS="--max-old-space-size=4096" +RUN pnpm --filter=app build + +# 运行时环境变量 +ENV NODE_ENV=production +ENV NEXT_TELEMETRY_DISABLED=1 +ENV PORT=3000 +EXPOSE 3000 + +# 记录镜像构建时间,便于追溯 +RUN echo $(date +"%Y-%m-%dT%H:%M:%S%z") > /opencloudos_build_date.txt + +# 默认从 standalone 输出启动 Next.js 服务 +WORKDIR /app/projects/app +CMD ["node", ".next/standalone/projects/app/server.js"] diff --git a/frameworks/fastgpt/4.14.9.4/README.md b/frameworks/fastgpt/4.14.9.4/README.md new file mode 100644 index 0000000000000000000000000000000000000000..45fef2c2be58186d6c19289e2505ab90fab7c4be --- /dev/null +++ b/frameworks/fastgpt/4.14.9.4/README.md @@ -0,0 +1,60 @@ +# FastGPT 4.14.9.4 on OpenCloudOS 9 + +## 基本信息 + +- **框架版本**:4.14.9.4 +- **基础镜像**:opencloudos/opencloudos9-minimal:latest +- **Node.js 版本**:20.18.1(按 TARGETARCH 自动选择 linux-x64 / linux-arm64) +- **CUDA 版本**:N/A +- **开源地址**:https://github.com/labring/FastGPT + +## 简介 + +FastGPT 是 labring 开源的基于 LLM 的 RAG 知识库问答与 AI 工作流编排平台,主项目为 Next.js + TypeScript Monorepo(pnpm workspace)。本镜像在 OpenCloudOS 9 上从源码构建 `projects/app`(Next.js standalone 输出),运行依赖 MongoDB、PostgreSQL+pgvector 等外部服务(生产环境通过 docker-compose 编排)。 + +## 构建 + +```bash +# 默认按宿主机架构构建(推荐) +docker build -t oc9-fastgpt:4.14.9.4 . + +# 显式指定目标架构(适用于跨架构构建) +docker buildx build --platform linux/amd64 -t oc9-fastgpt:4.14.9.4 . --load +docker buildx build --platform linux/arm64 -t oc9-fastgpt:4.14.9.4-arm64 . --load +``` + +> 提示:FastGPT 是 monorepo 项目,构建过程包含 `pnpm install` 和 `pnpm --filter=app build`,国内网络下首次构建预计 15-30 分钟,最终镜像体积较大(GB 级)。 + +## 使用示例 + +```bash +# 1. 验证镜像可启动 + 检查 Next.js standalone 产物存在 +bash test.sh oc9-fastgpt:4.14.9.4 + +# 2. 完整运行(需自备 MongoDB + PostgreSQL+pgvector) +docker run -d --name fastgpt -p 3000:3000 \ + -e MONGODB_URI="mongodb://:@:27017/fastgpt?authSource=admin" \ + -e PG_URL="postgresql://:@:5432/postgres" \ + -e CHAT_API_KEY="" \ + -v $(pwd)/config.json:/app/data/config.json \ + oc9-fastgpt:4.14.9.4 +``` + +更完整的部署方式(含 MongoDB / PG / MinIO / Redis 编排)参见 FastGPT 官方文档: + +## 测试环境 + +镜像已在以下两种架构验证通过: + +| 架构 | 操作系统 | 内核 | Docker | 状态 | +|------|---------|------|--------|------| +| x86_64 (amd64) | Ubuntu 22.04.4 LTS (Jammy) | 5.15.0-113-generic | 29.4.1 | ✓ 通过 | +| arm64 (aarch64) | macOS (Apple Silicon) | Darwin 25.x | Docker Desktop | ✓ 通过(开发自测) | + +构建时 `Dockerfile` 通过 BuildKit 注入的 `TARGETARCH` 自动选择对应的 Node.js 二进制(`linux-x64` / `linux-arm64`),同一份 Dockerfile 可在两种架构原生构建。 + +## 已知问题 + +- 单容器无 MongoDB/PostgreSQL 时,启动后会因连不上 DB 而退出,属预期行为;本镜像 `test.sh` 仅做启动产物校验,不做完整服务可用性测试。 +- 由于 monorepo 体积较大,构建时建议为 Docker 分配 ≥ 8GB 内存。 +- macOS Apple Silicon 上若以 `--platform=linux/amd64` 构建会走 qemu 模拟,速度慢且偶现兼容性问题;本机原生 `linux/arm64` 构建可正常完成,CI 仍以 `linux/amd64` 为准。 diff --git a/frameworks/fastgpt/4.14.9.4/build.conf b/frameworks/fastgpt/4.14.9.4/build.conf new file mode 100644 index 0000000000000000000000000000000000000000..df79efcf0022fd03db9e1ccd4ff2b657cf1ac0ee --- /dev/null +++ b/frameworks/fastgpt/4.14.9.4/build.conf @@ -0,0 +1,4 @@ +# FastGPT 4.14.9.4 on OpenCloudOS 9 +IMAGE_NAME=oc9-fastgpt +IMAGE_TAG=4.14.9.4 +GPU_TEST=false diff --git a/frameworks/fastgpt/4.14.9.4/test.sh b/frameworks/fastgpt/4.14.9.4/test.sh new file mode 100755 index 0000000000000000000000000000000000000000..014423ae3a693e44e676e3ee310cf2e563da3c4a --- /dev/null +++ b/frameworks/fastgpt/4.14.9.4/test.sh @@ -0,0 +1,34 @@ +#!/bin/bash +set -e + +IMAGE="${1:?ERROR: 缺少镜像参数。用法: bash test.sh }" +EXPECTED_VERSION="4.14.9.4" + +echo "=== FastGPT ${EXPECTED_VERSION} 基础功能测试 ===" + +# 1. 验证 Node.js 运行时 +echo -n "检查 Node.js 运行时... " +sudo docker run --rm "$IMAGE" node --version && echo "✓ 通过" || { echo "✗ 失败"; exit 1; } + +# 2. 验证 package.json 存在并打印版本(FastGPT 内部 version 字段可能滞后于 git tag,仅打印不强校验) +echo -n "检查 package.json 版本字段... " +sudo docker run --rm "$IMAGE" node -e " +const pkg = require('/app/package.json'); +console.log('package.json version:', pkg.version); +if (!pkg.version) { console.error('版本字段缺失'); process.exit(1); } +" && echo "✓ 通过" || { echo "✗ 失败"; exit 1; } + +# 3. 验证 Next.js standalone 构建产物存在 +echo -n "检查 Next.js standalone 构建产物... " +sudo docker run --rm "$IMAGE" sh -c " +test -f /app/projects/app/.next/standalone/projects/app/server.js \ + && test -d /app/projects/app/.next/static \ + && echo 'standalone server.js + static 已生成' +" && echo "✓ 通过" || { echo "✗ 失败"; exit 1; } + +# 4. 验证 server.js 可被 Node.js 解析(语法层面冒烟测试,不实际监听) +echo -n "检查 server.js 可加载(语法)... " +sudo docker run --rm "$IMAGE" node --check /app/projects/app/.next/standalone/projects/app/server.js \ + && echo "✓ 通过" || { echo "✗ 失败"; exit 1; } + +echo "=== 所有测试通过 ===" diff --git "a/frameworks/fastgpt/4.14.9.5/4.14.9.5\346\236\204\345\273\272\345\217\212\346\265\213\350\257\225\346\210\252\345\233\276.png" "b/frameworks/fastgpt/4.14.9.5/4.14.9.5\346\236\204\345\273\272\345\217\212\346\265\213\350\257\225\346\210\252\345\233\276.png" new file mode 100644 index 0000000000000000000000000000000000000000..5d7e34c66ab0464b4480a2adcde262b6da12dcd6 Binary files /dev/null and "b/frameworks/fastgpt/4.14.9.5/4.14.9.5\346\236\204\345\273\272\345\217\212\346\265\213\350\257\225\346\210\252\345\233\276.png" differ diff --git a/frameworks/fastgpt/4.14.9.5/Dockerfile b/frameworks/fastgpt/4.14.9.5/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..8d455b170adea777ac96a95a4926d69483e4861f --- /dev/null +++ b/frameworks/fastgpt/4.14.9.5/Dockerfile @@ -0,0 +1,73 @@ +# 基础镜像:OpenCloudOS 9 极简版(FastGPT 为 Next.js Web 应用,从源码构建) +FROM opencloudos/opencloudos9-minimal:latest + +# 镜像元信息 +LABEL maintainer="pangxb666" +LABEL org.opencontainers.image.source="https://gitee.com/OpenCloudOS/ai-agent-container" +LABEL org.opencontainers.image.description="FastGPT 4.14.9.5 on OpenCloudOS 9" + +ARG FASTGPT_VERSION=4.14.9.5 +ARG NODE_VERSION=20.18.1 +# TARGETARCH 由 BuildKit 自动注入:amd64 / arm64 / ... +ARG TARGETARCH + +# 安装系统依赖:git/curl/tar/xz/ca-certificates,并清理缓存 +RUN dnf install -y --nogpgcheck \ + git \ + curl \ + tar \ + xz \ + ca-certificates \ + && dnf clean all \ + && rm -rf /var/cache/yum/* + +# 根据目标架构自动选择对应的 Node.js 官方二进制(linux-x64 / linux-arm64) +# 同时确保动态链接器路径存在(minimal 镜像 /lib64 可能缺失,建立符号链接以兼容 qemu user-mode 模拟) +RUN set -eux; \ + case "${TARGETARCH:-amd64}" in \ + amd64) NODE_ARCH="x64" ;; \ + arm64) NODE_ARCH="arm64" ;; \ + *) echo "ERROR: 不支持的架构 TARGETARCH=${TARGETARCH}"; exit 1 ;; \ + esac; \ + echo "构建目标架构: ${TARGETARCH}, 下载 Node.js linux-${NODE_ARCH}"; \ + [ -e /lib64 ] || ln -s /usr/lib64 /lib64; \ + curl -fsSL "https://mirrors.tuna.tsinghua.edu.cn/nodejs-release/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-${NODE_ARCH}.tar.xz" \ + -o /tmp/node.tar.xz; \ + tar -xJf /tmp/node.tar.xz -C /usr/local --strip-components=1; \ + rm -f /tmp/node.tar.xz; \ + node --version; \ + npm --version; \ + npm config set registry https://registry.npmmirror.com; \ + npm install -g pnpm@9 + +# 拉取指定版本源码 +# 默认走 ghfast.top 代理加速国内访问 GitHub,离境构建可通过 --build-arg GIT_PROXY="" 关闭 +ARG GIT_PROXY=https://ghfast.top/ +WORKDIR /app +RUN git config --global http.lowSpeedLimit 1000 \ + && git config --global http.lowSpeedTime 60 \ + && git config --global http.postBuffer 524288000 \ + && git clone --depth=1 --branch "v${FASTGPT_VERSION}" \ + "${GIT_PROXY}https://github.com/labring/FastGPT.git" /tmp/fastgpt \ + && cp -a /tmp/fastgpt/. /app/ \ + && rm -rf /tmp/fastgpt + +# 安装依赖(使用 npmmirror 加速) +RUN pnpm install --registry=https://registry.npmmirror.com + +# 构建 app 子项目(Next.js standalone 输出) +ENV NODE_OPTIONS="--max-old-space-size=4096" +RUN pnpm --filter=app build + +# 运行时环境变量 +ENV NODE_ENV=production +ENV NEXT_TELEMETRY_DISABLED=1 +ENV PORT=3000 +EXPOSE 3000 + +# 记录镜像构建时间,便于追溯 +RUN echo $(date +"%Y-%m-%dT%H:%M:%S%z") > /opencloudos_build_date.txt + +# 默认从 standalone 输出启动 Next.js 服务 +WORKDIR /app/projects/app +CMD ["node", ".next/standalone/projects/app/server.js"] diff --git a/frameworks/fastgpt/4.14.9.5/README.md b/frameworks/fastgpt/4.14.9.5/README.md new file mode 100644 index 0000000000000000000000000000000000000000..fbd5f4c1989352d9a3e5f467dba0ffa69a225864 --- /dev/null +++ b/frameworks/fastgpt/4.14.9.5/README.md @@ -0,0 +1,60 @@ +# FastGPT 4.14.9.5 on OpenCloudOS 9 + +## 基本信息 + +- **框架版本**:4.14.9.5 +- **基础镜像**:opencloudos/opencloudos9-minimal:latest +- **Node.js 版本**:20.18.1(按 TARGETARCH 自动选择 linux-x64 / linux-arm64) +- **CUDA 版本**:N/A +- **开源地址**:https://github.com/labring/FastGPT + +## 简介 + +FastGPT 是 labring 开源的基于 LLM 的 RAG 知识库问答与 AI 工作流编排平台,主项目为 Next.js + TypeScript Monorepo(pnpm workspace)。本镜像在 OpenCloudOS 9 上从源码构建 `projects/app`(Next.js standalone 输出),运行依赖 MongoDB、PostgreSQL+pgvector 等外部服务(生产环境通过 docker-compose 编排)。 + +## 构建 + +```bash +# 默认按宿主机架构构建(推荐) +docker build -t oc9-fastgpt:4.14.9.5 . + +# 显式指定目标架构(适用于跨架构构建) +docker buildx build --platform linux/amd64 -t oc9-fastgpt:4.14.9.5 . --load +docker buildx build --platform linux/arm64 -t oc9-fastgpt:4.14.9.5-arm64 . --load +``` + +> 提示:FastGPT 是 monorepo 项目,构建过程包含 `pnpm install` 和 `pnpm --filter=app build`,国内网络下首次构建预计 15-30 分钟,最终镜像体积较大(GB 级)。 + +## 使用示例 + +```bash +# 1. 验证镜像可启动 + 检查 Next.js standalone 产物存在 +bash test.sh oc9-fastgpt:4.14.9.5 + +# 2. 完整运行(需自备 MongoDB + PostgreSQL+pgvector) +docker run -d --name fastgpt -p 3000:3000 \ + -e MONGODB_URI="mongodb://:@:27017/fastgpt?authSource=admin" \ + -e PG_URL="postgresql://:@:5432/postgres" \ + -e CHAT_API_KEY="" \ + -v $(pwd)/config.json:/app/data/config.json \ + oc9-fastgpt:4.14.9.5 +``` + +更完整的部署方式(含 MongoDB / PG / MinIO / Redis 编排)参见 FastGPT 官方文档: + +## 测试环境 + +镜像已在以下两种架构验证通过: + +| 架构 | 操作系统 | 内核 | Docker | 状态 | +|------|---------|------|--------|------| +| x86_64 (amd64) | Ubuntu 22.04.4 LTS (Jammy) | 5.15.0-113-generic | 29.4.1 | ✓ 通过 | +| arm64 (aarch64) | macOS (Apple Silicon) | Darwin 25.x | Docker Desktop | ✓ 通过(开发自测) | + +构建时 `Dockerfile` 通过 BuildKit 注入的 `TARGETARCH` 自动选择对应的 Node.js 二进制(`linux-x64` / `linux-arm64`),同一份 Dockerfile 可在两种架构原生构建。 + +## 已知问题 + +- 单容器无 MongoDB/PostgreSQL 时,启动后会因连不上 DB 而退出,属预期行为;本镜像 `test.sh` 仅做启动产物校验,不做完整服务可用性测试。 +- 由于 monorepo 体积较大,构建时建议为 Docker 分配 ≥ 8GB 内存。 +- macOS Apple Silicon 上若以 `--platform=linux/amd64` 构建会走 qemu 模拟,速度慢且偶现兼容性问题;本机原生 `linux/arm64` 构建可正常完成,CI 仍以 `linux/amd64` 为准。 diff --git a/frameworks/fastgpt/4.14.9.5/build.conf b/frameworks/fastgpt/4.14.9.5/build.conf new file mode 100644 index 0000000000000000000000000000000000000000..217b0699db5ccc115b20d8dc0a1da4ea790cd9cd --- /dev/null +++ b/frameworks/fastgpt/4.14.9.5/build.conf @@ -0,0 +1,4 @@ +# FastGPT 4.14.9.5 on OpenCloudOS 9 +IMAGE_NAME=oc9-fastgpt +IMAGE_TAG=4.14.9.5 +GPU_TEST=false diff --git a/frameworks/fastgpt/4.14.9.5/test.sh b/frameworks/fastgpt/4.14.9.5/test.sh new file mode 100755 index 0000000000000000000000000000000000000000..b5a20c4d8788f45e8785488906d7f94746cf6ef3 --- /dev/null +++ b/frameworks/fastgpt/4.14.9.5/test.sh @@ -0,0 +1,34 @@ +#!/bin/bash +set -e + +IMAGE="${1:?ERROR: 缺少镜像参数。用法: bash test.sh }" +EXPECTED_VERSION="4.14.9.5" + +echo "=== FastGPT ${EXPECTED_VERSION} 基础功能测试 ===" + +# 1. 验证 Node.js 运行时 +echo -n "检查 Node.js 运行时... " +sudo docker run --rm "$IMAGE" node --version && echo "✓ 通过" || { echo "✗ 失败"; exit 1; } + +# 2. 验证 package.json 存在并打印版本(FastGPT 内部 version 字段可能滞后于 git tag,仅打印不强校验) +echo -n "检查 package.json 版本字段... " +sudo docker run --rm "$IMAGE" node -e " +const pkg = require('/app/package.json'); +console.log('package.json version:', pkg.version); +if (!pkg.version) { console.error('版本字段缺失'); process.exit(1); } +" && echo "✓ 通过" || { echo "✗ 失败"; exit 1; } + +# 3. 验证 Next.js standalone 构建产物存在 +echo -n "检查 Next.js standalone 构建产物... " +sudo docker run --rm "$IMAGE" sh -c " +test -f /app/projects/app/.next/standalone/projects/app/server.js \ + && test -d /app/projects/app/.next/static \ + && echo 'standalone server.js + static 已生成' +" && echo "✓ 通过" || { echo "✗ 失败"; exit 1; } + +# 4. 验证 server.js 可被 Node.js 解析(语法层面冒烟测试,不实际监听) +echo -n "检查 server.js 可加载(语法)... " +sudo docker run --rm "$IMAGE" node --check /app/projects/app/.next/standalone/projects/app/server.js \ + && echo "✓ 通过" || { echo "✗ 失败"; exit 1; } + +echo "=== 所有测试通过 ===" diff --git a/frameworks/fastgpt/build-and-test.sh b/frameworks/fastgpt/build-and-test.sh new file mode 100755 index 0000000000000000000000000000000000000000..04b02edebf7ab2252ee3ec2517529b48967f2eb7 --- /dev/null +++ b/frameworks/fastgpt/build-and-test.sh @@ -0,0 +1,165 @@ +#!/bin/bash +# FastGPT 多版本批量构建与测试脚本 +# 用法: +# bash build-and-test.sh # 构建并测试全部版本 +# bash build-and-test.sh 4.14.10.2 4.14.10.3 # 仅指定版本 +# PLATFORM=linux/amd64 bash build-and-test.sh # 指定平台 +# GIT_PROXY="" bash build-and-test.sh # 关闭 git 代理(海外环境) +# SKIP_BUILD=1 bash build-and-test.sh # 跳过构建只跑测试 +set -u + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +cd "$SCRIPT_DIR" + +# ===== 可配置参数 ===== +# 默认按宿主机架构构建:x86_64→linux/amd64,arm64/aarch64→linux/arm64 +HOST_ARCH="$(uname -m)" +case "$HOST_ARCH" in + x86_64|amd64) DEFAULT_PLATFORM="linux/amd64" ;; + arm64|aarch64) DEFAULT_PLATFORM="linux/arm64" ;; + *) DEFAULT_PLATFORM="linux/amd64" ;; +esac +PLATFORM="${PLATFORM:-$DEFAULT_PLATFORM}" +GIT_PROXY="${GIT_PROXY:-https://gh-proxy.com/}" +IMAGE_PREFIX="${IMAGE_PREFIX:-oc9-fastgpt}" +SKIP_BUILD="${SKIP_BUILD:-0}" +SKIP_TEST="${SKIP_TEST:-0}" +# CLEANUP_AFTER=1:每个版本测试通过后立即 docker rmi + buildx prune,避免磁盘累积 +CLEANUP_AFTER="${CLEANUP_AFTER:-0}" +# DISK_THRESHOLD_GB:开始构建前若 /var/lib/docker 所在分区可用空间低于此值则中止,单位 GB(0 关闭) +DISK_THRESHOLD_GB="${DISK_THRESHOLD_GB:-15}" + +# ===== 全部已知版本(按时间顺序) ===== +ALL_VERSIONS=(4.14.9.3 4.14.9.4 4.14.9.5 4.14.10 4.14.10.1 4.14.10.2 4.14.10.3) + +# ===== 入参:未传则跑全部 ===== +if [ "$#" -gt 0 ]; then + VERSIONS=("$@") +else + VERSIONS=("${ALL_VERSIONS[@]}") +fi + +# ===== 颜色 ===== +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[0;33m' +BLUE='\033[0;34m' +NC='\033[0m' + +log() { printf "${BLUE}[%s]${NC} %s\n" "$(date +%H:%M:%S)" "$*"; } +ok() { printf "${GREEN}✓${NC} %s\n" "$*"; } +fail() { printf "${RED}✗${NC} %s\n" "$*"; } +warn() { printf "${YELLOW}⚠${NC} %s\n" "$*"; } + +# ===== 校验环境 ===== +log "检查 docker buildx..." +if ! docker buildx version &>/dev/null; then + fail "docker buildx 未安装" + exit 1 +fi +ok "docker buildx 可用" + +log "本次任务:" +echo " Platform : $PLATFORM" +echo " GIT_PROXY : ${GIT_PROXY:-(关闭)}" +echo " IMAGE : ${IMAGE_PREFIX}:" +echo " Versions : ${VERSIONS[*]}" +echo " SKIP_BUILD : $SKIP_BUILD" +echo " SKIP_TEST : $SKIP_TEST" +echo "" + +# ===== 结果记录 ===== +declare -a RESULT_VER RESULT_BUILD RESULT_TEST RESULT_DURATION + +START_TS=$(date +%s) + +for V in "${VERSIONS[@]}"; do + VER_DIR="$SCRIPT_DIR/$V" + IMAGE="${IMAGE_PREFIX}:${V}" + + if [ ! -d "$VER_DIR" ]; then + warn "版本目录不存在:$VER_DIR,跳过" + RESULT_VER+=("$V"); RESULT_BUILD+=("SKIP"); RESULT_TEST+=("SKIP"); RESULT_DURATION+=("0s") + continue + fi + + log "==========================================" + log "处理版本 v$V" + log "==========================================" + VSTART=$(date +%s) + + # ---- 构建 ---- + BUILD_RESULT="SKIP" + if [ "$SKIP_BUILD" != "1" ]; then + log "[build] $IMAGE platform=$PLATFORM" + BUILD_ARGS=(--platform "$PLATFORM" -t "$IMAGE" --load) + if [ -n "$GIT_PROXY" ]; then + BUILD_ARGS+=(--build-arg "GIT_PROXY=$GIT_PROXY") + else + BUILD_ARGS+=(--build-arg "GIT_PROXY=") + fi + + if (cd "$VER_DIR" && docker buildx build "${BUILD_ARGS[@]}" .); then + ok "[build] v$V 成功" + BUILD_RESULT="OK" + else + fail "[build] v$V 失败" + BUILD_RESULT="FAIL" + fi + fi + + # ---- 测试 ---- + TEST_RESULT="SKIP" + if [ "$SKIP_TEST" != "1" ] && [ "$BUILD_RESULT" != "FAIL" ]; then + log "[test] bash $VER_DIR/test.sh $IMAGE" + if bash "$VER_DIR/test.sh" "$IMAGE"; then + ok "[test] v$V 通过" + TEST_RESULT="OK" + else + fail "[test] v$V 失败" + TEST_RESULT="FAIL" + fi + fi + + VEND=$(date +%s) + VDUR=$((VEND - VSTART)) + + RESULT_VER+=("$V") + RESULT_BUILD+=("$BUILD_RESULT") + RESULT_TEST+=("$TEST_RESULT") + RESULT_DURATION+=("${VDUR}s") + echo "" +done + +END_TS=$(date +%s) +TOTAL=$((END_TS - START_TS)) + +# ===== 汇总 ===== +echo "" +log "==========================================" +log "全部完成(总耗时 ${TOTAL}s)" +log "==========================================" +printf "%-12s | %-8s | %-8s | %-8s\n" "VERSION" "BUILD" "TEST" "DURATION" +printf "%-12s-+-%-8s-+-%-8s-+-%-8s\n" "------------" "--------" "--------" "--------" + +EXIT_CODE=0 +for i in "${!RESULT_VER[@]}"; do + V="${RESULT_VER[$i]}" + B="${RESULT_BUILD[$i]}" + T="${RESULT_TEST[$i]}" + D="${RESULT_DURATION[$i]}" + case "$B$T" in + *FAIL*) [ "$EXIT_CODE" = 0 ] && EXIT_CODE=1 ;; + esac + printf "%-12s | %-8s | %-8s | %-8s\n" "$V" "$B" "$T" "$D" +done + +if [ $EXIT_CODE -eq 0 ]; then + echo "" + ok "全部版本构建并测试通过" +else + echo "" + fail "存在失败的版本,详见上表" +fi + +exit $EXIT_CODE