00 / 00
Zeabur 部署
在 Zeabur 运行 01MVP Docker 服务,并通过受保护的 Cloudflare 代理访问 D1。
Zeabur 只承载 Web/Node 容器,数据库仍然是 Cloudflare D1。应用不需要 Zeabur PostgreSQL 服务,也不配置 DATABASE_URL。
部署结构
浏览器 -> Zeabur Web -> HTTPS D1 binding 代理 -> Cloudflare D1这个结构适合保留现有 Zeabur 部署,同时让 Zeabur 和 Cloudflare Worker 使用同一份数据。它会增加一次 Zeabur 到 Cloudflare 的网络往返;当站点完全迁到 Cloudflare 后,可以删除 Node 代理路径。
环境变量
在 Zeabur Web 服务配置通用生产变量,并额外设置:
D1_PROXY_URL=https://<cloudflare-domain>/_internal/d1
D1_PROXY_TOKEN=<server-only-random-token>同一个 token 还要配置为 Cloudflare Worker secret。它只能存在于两个服务端环境,不能进入 VITE_*、浏览器 bundle、日志或仓库。
Zeabur 运行时不需要 Cloudflare 账号 API token。代理在 Worker 内使用 D1 binding,避免把 Cloudflare 管理权限交给应用容器。
部署顺序
- 在 Cloudflare D1 应用已提交的 migration。
- 部署 Cloudflare Worker,确认数据库代理和
/api/health可用。 - 在 Zeabur 配置
D1_PROXY_URL与 token。 - 推送目标分支,等待 Git 部署完成。
- 检查 Zeabur 域名的健康接口、登录和关键业务流程。
当前项目使用根目录 Dockerfile。生产密钥只在运行时注入,不作为 build arg 写进镜像历史。
故障排查
D1_PROXY_URL is not configured:Node 环境缺少代理地址。D1 proxy request failed with 401/403:两端 token 不一致,重新生成并同时更新。/api/health数据库检查失败:先检查 Cloudflare Worker 和 D1,再检查 Zeabur 到代理域名的网络。- migration 后出现列不存在:确认 migration 已应用到与
wrangler.jsonc相同的生产 D1。
需要 AI 操作 Zeabur 服务、域名或变量时,可以使用 Zeabur Agent Skills。
这篇文档有问题?