跳转到内容

02. 准备 Cloudflare 资源

这一章是最容易偷懒、也是最不能偷懒的一章。

很多人会直接跳到部署命令。

然后第一个报错就是:

  • 找不到 D1
  • 找不到 KV
  • 找不到 R2
  • service binding 目标不存在

所以请老老实实做完这章。

先说结论:

  • 线上 Cloudflare 资源创建,建议你仍然按本章命令行步骤来
  • 但你可以同时打开 Dev Console 的 部署 Cloudflare 标签页辅助查看配置

这样做的好处是:

  • 命令行步骤适合写成标准文档
  • 控制台适合帮你减少漏项

当前后端服务之间有循环依赖。

举个例子:

  • node1-auth-service 依赖 node2-support-service
  • node2-support-service 依赖 node1-auth-service
  • 很多服务又依赖 node4-notify-service

这意味着:

  • 如果你什么都不建,直接部署第一个 Worker
  • Cloudflare 很可能会告诉你绑定目标不存在

最稳妥的傻瓜方案就是:

先在 Cloudflare 里把 10 个 Worker 壳子创建好,名字和仓库里保持完全一致。

后面再用真实代码把它们覆盖掉。

打开 Cloudflare Dashboard。

进入:

  • Workers & Pages

然后重复下面操作 10 次:

  1. 点击 Create
  2. 选择 Worker
  3. 输入下面表格里的名称
  4. 用默认 Hello World 内容直接创建
目录Worker 名称
backend/node1-auth-servicezship-node1-auth
backend/node2-support-servicezship-node2-support
backend/node3-pay-servicezship-node3-pay
backend/node4-notify-servicezship-node4-notify
backend/node5-blog-servicezship-node5-blog
backend/node6-cdn-servicezship-node6-cdn
backend/node7-site-servicezship-node7-site
backend/node8-prompt-servicezship-node8-prompt
backend/node9-checkin-servicezship-node9-checkin
backend/node10-ai-servicezship-node10-ai

不要去 Dashboard 里一个一个手点。

直接在终端里执行下面命令。

这些命令的好处是:

  • 会创建数据库
  • 会把 database_id 自动写回对应的 wrangler.jsonc
Terminal window
cd backend/node1-auth-service && npx wrangler d1 create zship-auth --binding DB --update-config
cd ../node2-support-service && npx wrangler d1 create zship-support --binding DB --update-config
cd ../node3-pay-service && npx wrangler d1 create zship-pay --binding DB --update-config
cd ../node4-notify-service && npx wrangler d1 create zship-notify --binding DB --update-config
cd ../node5-blog-service && npx wrangler d1 create zship-blog --binding DB --update-config
cd ../node7-site-service && npx wrangler d1 create zship-site --binding DB --update-config
cd ../node8-prompt-service && npx wrangler d1 create zship-prompt --binding DB --update-config
cd ../node9-checkin-service && npx wrangler d1 create zship-checkin --binding DB --update-config
cd ../node10-ai-service && npx wrangler d1 create zship-ai --binding DB --update-config
cd ../../

执行完以后,你的这些文件里会被自动写入真实 database_id

  • backend/node1-auth-service/wrangler.jsonc
  • backend/node2-support-service/wrangler.jsonc
  • backend/node3-pay-service/wrangler.jsonc
  • backend/node4-notify-service/wrangler.jsonc
  • backend/node5-blog-service/wrangler.jsonc
  • backend/node7-site-service/wrangler.jsonc
  • backend/node8-prompt-service/wrangler.jsonc
  • backend/node9-checkin-service/wrangler.jsonc
  • backend/node10-ai-service/wrangler.jsonc

支付服务 node3-pay-service 需要一个 KV namespace。

在仓库根目录执行:

Terminal window
cd backend/node3-pay-service
npx wrangler kv namespace create zship-pay-kv --binding KV --update-config
cd ../../

执行完以后,backend/node3-pay-service/wrangler.jsonc 里的 KV id 会被自动更新。

CDN 服务 node6-cdn-service 需要一个 R2 bucket。

在仓库根目录执行:

Terminal window
cd backend/node6-cdn-service
npx wrangler r2 bucket create zship-cdn --binding BUCKET --update-config
cd ../../

执行完以后,backend/node6-cdn-service/wrangler.jsonc 会自动写入 bucket 绑定信息。

6. 检查配置文件里还有没有占位符

Section titled “6. 检查配置文件里还有没有占位符”

现在执行下面命令:

Terminal window
rg -n "00000000-0000-0000-0000-000000000000|placeholder-replace-after-create" backend/*/wrangler.jsonc

理想情况是:

  • 什么都搜不到

说明你有某个资源还没创建完,或者没有成功写回配置文件。

不要进入下一章。

先把遗漏补完。

7. 这一章结束前,你应该已经满足的条件

Section titled “7. 这一章结束前,你应该已经满足的条件”
  • 10 个空 Worker 已经存在于 Cloudflare
  • 9 个 D1 数据库已经创建
  • 1 个 KV namespace 已经创建
  • 1 个 R2 bucket 已经创建
  • backend/*/wrangler.jsonc 里不再有数据库占位符

如果你还没做到这些,不要继续。