部署 RedwoodJS 应用
全栈 React+Prisma+GraphQL 框架,部署到 Vercel、Netlify 或裸机 serverless 函数。
平台高级
为什么
RedwoodJS 在一个 CLI 驱动框架内集成 React 前端、Prisma ORM 和 GraphQL API,约定优于配置。Serverless 函数零配置部署到 Vercel/Netlify。
平台即服务采用率 2024 年增长 24%,团队从虚拟机管理转向 git push 部署。the cloud infrastructure market reached $330B in 2024, growing 22% year-over-year (Synergy Research),PaaS 层捕获了大多数新工作负载。
何时使用
全栈 TypeScript 应用配 Prisma 和 GraphQL 用 Redwood。非 Prisma 项目或需不同 API 风格时避免。
如何做
1. 构建 — rwj build,编译 web + api
2. Vercel — rwj deploy vercel,自动配置
3. Netlify — rwj deploy netlify
4. 裸机 — rwj deploy baremetal,需 PM2 + Nginx
5. DB — 发布时 rwj prisma migrate deploy
6. 函数 — api/src/functions 成为 serverless 端点
示例
// 部署到 Vercel
npx rwj deploy vercel
// api/src/functions/users.ts — GraphQL 函数
import { db } from "src/lib/db";
export const users = () => db.user.findMany();
// redwood.toml — 部署配置
[web]
port = 8910
[api]
port = 8911
常见问题
- ⚠部署时 Prisma migrate 失败 — DB 不可访问或 schema 漂移
- ⚠生产暴露 GraphQL playground — 设 GRAPHQL_ENDPOINT_GRAPHIQL=false
- ⚠环境间配置漂移 — 使用基础设施即代码(Terraform/Pulumi)保持 dev/staging/prod 一致
最佳实践
- ✓prisma migrate deploy 作为 release 命令 — 非运行时
- ✓用 Redwood 生成器(rwj g)跨服务一致脚手架
- ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求