使用 Render 部署
云平台,Web 服务、后台 worker、cron 任务和托管 Postgres/Redis。
平台入门
为什么
Render 是 Heroku 替代品,git push 部署、Docker 支持、托管数据库和免费层。git push 自动部署,PR 预览部署。
平台即服务采用率 2024 年增长 24%,团队从虚拟机管理转向 git push 部署。the cloud infrastructure market reached $330B in 2024, growing 22% year-over-year (Synergy Research),PaaS 层捕获了大多数新工作负载。
何时使用
Web 服务、后台 worker 和从 Heroku 迁移的团队用 Render。边缘/serverless 避免 — 用 Cloudflare/Vercel。
如何做
1. 创建 — render.com → 新建 + → Web 服务 → 连接仓库
2. 构建 — 自动检测或指定构建命令 + 启动命令
3. 环境 — 面板设环境变量
4. 数据库 — 新建 + → PostgreSQL,自动获取内部 DATABASE_URL
5. Worker — 新建 + → 后台 Worker 用于队列/cron
6. 自定义域名 — 设置 → 自定义域名
7. 自动扩缩 — 设置 → 自动扩缩
示例
# render.yaml — 基础设施即代码
services:
- type: web
name: myapp
env: node
buildCommand: npm ci && npm run build
startCommand: npm start
envVars:
- key: DATABASE_URL
fromDatabase: { name: mydb, property: connectionString }
- type: worker
name: myworker
env: node
startCommand: npm run worker
databases:
- name: mydb
plan: starter
常见问题
- ⚠免费层 15 分钟后休眠 — 首次请求 30s 启动,升级 starter
- ⚠Worker 静默退出 — Render 期望 worker 永久运行,退出视为崩溃
- ⚠环境间配置漂移 — 使用基础设施即代码(Terraform/Pulumi)保持 dev/staging/prod 一致
最佳实践
- ✓用 render.yaml 做 IaC — 版本控制可复现环境
- ✓Web 服务和 worker 分离 — 独立扩缩,worker 不需 HTTP 端口
- ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求