Skip to content

部署

GodeX 设计为零依赖部署:一个暴露 OpenAI 兼容 Responses API 网关的单一静态二进制文件。支持三种分发渠道——多阶段 Docker 镜像、六个平台目标的原生编译二进制文件,以及在安装时自动选择正确平台二进制文件的 npm 包。构建系统使用 Bun 的 --compile 标志生成自包含的可执行文件,Docker 镜像使用两阶段构建以保持运行时层最小化。

概览

方面详情
运行时独立二进制文件(Bun compile)
Docker多阶段:oven/bun 构建 + debian:bookworm-slim 运行时
平台darwin-arm64、darwin-x64、linux-x64、linux-arm64、win32-x64、win32-arm64
默认端口GODEX_PORT=5678
配置路径/etc/godex/godex.yaml(Docker)
数据卷/data(用于会话和追踪)

Docker 部署

Dockerfile 位于 Dockerfile:1-53, 使用两阶段构建:

构建阶段

步骤描述
基础镜像oven/bun:1.3.14
依赖安装bun install --frozen-lockfile --ignore-scripts
版本注入通过 ARG VERSION 使用 sed 替换 package.json 中的版本
编译bun build --compile,目标平台从 TARGETARCH 推导
定义GODEX_BUILD_ENV="prod" 内嵌到二进制文件中

TARGETARCH 构建参数在 Dockerfile:22-28 映射到 Bun 编译目标:amd64 -> x64arm64 -> arm64

运行时阶段

方面
基础镜像debian:bookworm-slim
二进制文件位置/usr/local/bin/godex
数据卷/data(会话、追踪)
配置卷/etc/godex
默认端口5678(环境变量 GODEX_PORT
入口点godex serve --config /etc/godex/godex.yaml

Docker 使用方法

bash
# 构建
docker build --build-arg VERSION=1.0.0 -t godex .

# 运行
docker run -d \
  -p 5678:5678 \
  -v /path/to/godex.yaml:/etc/godex/godex.yaml \
  -v godex-data:/data \
  godex

原生二进制编译

编译脚本位于 scripts/compile.ts:1-107, 支持三种模式:

模式命令目标
当前平台bun run compile匹配 process.platform + process.arch
所有平台bun run compile --all所有六个平台
指定目标bun run compile --target=darwin-arm64单个平台

平台矩阵

定义在 scripts/compile.ts:11-42

平台npm 包Bun 目标
macOS ARM64@ahoo-wang/godex-darwin-arm64bun-darwin-arm64
macOS x64@ahoo-wang/godex-darwin-x64bun-darwin-x64
Linux x64@ahoo-wang/godex-linux-x64bun-linux-x64
Linux ARM64@ahoo-wang/godex-linux-arm64bun-linux-arm64
Windows x64@ahoo-wang/godex-win32-x64bun-windows-x64
Windows ARM64@ahoo-wang/godex-win32-arm64bun-windows-arm64

所有构建通过 --define 注入 GODEX_BUILD_ENV="prod",位于 第 83 行

npm 包分发

package.json 位于 package.json:1-75, 在 第 49-55 行 将平台特定二进制文件声明为 optionalDependencies

json
"optionalDependencies": {
  "@ahoo-wang/godex-darwin-arm64": "0.0.2",
  "@ahoo-wang/godex-darwin-x64": "0.0.2",
  "@ahoo-wang/godex-linux-x64": "0.0.2",
  "@ahoo-wang/godex-linux-arm64": "0.0.2",
  "@ahoo-wang/godex-win32-x64": "0.0.2",
  "@ahoo-wang/godex-win32-arm64": "0.0.2"
}

postinstall 脚本位于 第 45 行, 运行 scripts/install.cjs 来定位并链接正确的二进制文件。

环境变量

EnvVars 位于 src/config/env.ts:15-30, 从编译时 GODEX_BUILD_ENV 定义解析运行时环境:

变量用途
GODEX_BUILD_ENV编译时环境(内嵌到二进制文件中)proddev(默认)
GODEX_PORT默认服务器端口(Docker)默认:5678

Env 枚举位于 src/config/env.ts:2-5, 暴露 EnvVars.isDevEnvVars.isProd,供整个代码库中的条件行为使用。

CI 管道

ci 脚本位于 package.json:53, 运行完整的验证链:

bash
bun run typecheck && biome ci src && bun run test && bun run test:e2e
步骤命令用途
类型检查tsc --noEmitTypeScript 正确性
代码检查biome ci src代码风格强制
单元测试bun test除 E2E 外的所有测试
E2E 测试bun test src/e2e端到端集成测试

check 脚本位于 第 52 行, 是推送前门控:typecheck + lint + test

E2E 测试目标

命令提供商实时标志
test:zhipuZhipu(智谱)ZHIPU_LIVE_TESTS=1
test:deepseekDeepSeekDEEPSEEK_LIVE_TESTS=1
test:minimaxMiniMaxMINIMAX_LIVE_TESTS=1
test:xiaomiXiaomi MiMoXIAOMI_LIVE_TESTS=1

交叉引用

参考文献