Cloudflare Workers 部署

基于 OpenNext 的可选部署路径,说明适用场景、构建命令、环境变量和兼容性验证。

Cloudflare Workers 部署适合明确需要 Cloudflare 边缘运行时的项目。01MVP 当前保留了 OpenNext 路径,但默认生产部署是 Zeabur,Cloudflare 主要负责 DNS、代理、HTTPS 和 WAF。

直接部署到 Cloudflare Workers 需要单独验证数据库连接、文档资产、搜索、Node.js 兼容性和第三方 SDK。不要把它当成默认上线路径。

适用场景

场景建议
只是想快速上线 Next.js 产品Zeabur 部署
已经有容器平台或需要自管运行时Docker 部署
明确需要 Cloudflare Workers、边缘网络或 Cloudflare 生态绑定评估本页路径
只需要 Cloudflare DNS、CDN、WAF不需要迁移应用运行时,继续用 Zeabur 或 Docker

当前脚本

apps/01mvp-web/package.json 中保留了 Cloudflare 相关脚本:

pnpm --filter 01mvp-web build:cf
pnpm --filter 01mvp-web preview:cf
pnpm --filter 01mvp-web deploy:cf

这些脚本会先生成文档 assets,再通过 @opennextjs/cloudflare 构建 Worker 输出。

Wrangler 配置

配置文件位于 apps/01mvp-web/wrangler.jsonc。核心结构如下:

{
  "name": "01mvp-web-cf",
  "main": ".open-next/worker.js",
  "compatibility_flags": ["nodejs_compat", "global_fetch_strictly_public"],
  "assets": {
    "directory": ".open-next/assets",
    "binding": "ASSETS"
  },
  "vars": {
    "ONE_MVP_DOCS_ASSETS": "true",
    "NEXT_TELEMETRY_DISABLED": "1"
  }
}

正式接入前需要按项目补充:

  • 生产域名 routes 或 custom domain
  • 数据库连接方式
  • Secret 环境变量
  • R2、KV、D1、Hyperdrive 等 Cloudflare 绑定
  • 日志与观测配置

本地预览

安装依赖

pnpm install --frozen-lockfile

生成 Worker 构建产物

pnpm --filter 01mvp-web build:cf

本地预览

pnpm --filter 01mvp-web preview:cf

打开预览地址,检查首页、文档页、登录入口、API 路由和静态资源。

环境变量和 Secret

Cloudflare Workers 不会自动读取 Zeabur 或本地 .env.prd 环境变量。生产密钥要用 Wrangler Secret 或 Cloudflare Dashboard 配置。

cd apps/01mvp-web
pnpm exec wrangler secret put DATABASE_URL
pnpm exec wrangler secret put BETTER_AUTH_SECRET
pnpm exec wrangler secret put OPENAI_API_KEY

公开变量可以放在 wrangler.jsoncvars 中,但不要把真实密钥写进 vars

Serverless/edge 数据库连接需要单独评估。直连 PostgreSQL 可能受连接数、网络和 TLS 影响,生产环境通常需要连接池、Hyperdrive 或数据库提供商的 Serverless 连接方案。

兼容性验证

Cloudflare Workers 和 Node.js 运行时不完全一致。部署前至少验证:

  • pnpm --filter 01mvp-web build:cf 成功
  • pnpm --filter 01mvp-web preview:cf 能打开首页和核心文档页
  • /api/docs-search 能返回搜索结果
  • 登录、注册、OAuth 回调和 session 行为正常
  • Drizzle 能连接目标数据库
  • 文件上传、S3/R2 访问和公开 URL 正常
  • AI、邮件、支付 SDK 在 Workers 运行时无兼容性错误
  • 静态资源和文档 assets 无 404

发布

确认本地预览通过后再执行部署:

pnpm --filter 01mvp-web deploy:cf

部署后检查:

pnpm exec wrangler deployments status

再访问生产域名,按部署后验证逐项检查。

常见问题

上线检查

  • wrangler.jsonc 中的 worker 名称、域名和 bindings 已按项目更新
  • 所有密钥已通过 Wrangler Secret 或 Dashboard 配置
  • 数据库连接方案已验证
  • build:cfpreview:cf 都通过
  • 文档 assets、搜索、登录、上传、AI、邮件和支付都在 Workers 预览环境验证过
  • 部署后确认 Cloudflare 已收到最新版本