Render 是后 Heroku 时代最接近 Heroku 风格的 PaaS——相同的五种服务类型、固定的月费定价、"连接仓库即部署"的工作流。与 Railway 相比,自动检测能力稍弱;与 Fly 相比,可用区域较少。最大的优势是:账单永远如你所料,没有意外。
如果你在过去十年里用过 Heroku,Render 的界面会让你感到格外熟悉。Web 服务、后台 Worker、定时任务、静态站点、托管数据库——相同的五种服务模型,相同的每服务配置页面,相同的"此分支自动构建并部署"工作流。正是这种亲切感让 Render 的采用率稳步增长:如果你在 Heroku 上发过布,这里没有什么新东西要学,但 Heroku 让你头疼的那些问题在这里都得到了改善。
相比 Heroku,Render 最实质的改进在于定价。Render 的计划按服务按月收费,价格固定——Web 服务 $7,Worker $7,托管 Postgres $7 起,静态站点免费。月末账单和月初一样,既不令人兴奋,也不会有意外,这正是它的意义所在。如果你希望在月初就知道自己要花多少钱,Render 是最友好的选择。
权衡是真实存在的,但范围有限。Render 的可用区域比 Fly 少(只有几个,分布在北美、欧洲、亚洲,而非 30+ 个)。技术栈的自动检测能力不如 Railway——你通常需要写一个小小的 render.yaml 或手动指定启动命令。免费套餐的冷启动时间为 30–60 秒,对于偶尔访问的个人项目尚可,但对于有真实用户的服务则完全不可接受。这些都不是致命缺陷,只是"稳定可靠"所付出的代价。
使用你的 GitHub 账户在 render.com 注册。OAuth 流程会请求仓库访问权限——出于安全考虑,建议将权限范围限制在特定仓库,而非选择"全部"。在创建非免费服务之前,无需绑定信用卡。
如果你不使用 GitHub,Render 也支持 GitLab 和 Bitbucket。
Render 的服务类型:
此外还有托管数据库:Postgres、Redis、Key Value——独立产品,各有独立的月费定价。
点击 New + → Web Service,选择仓库,然后配置以下内容:
main。npm install && npm run build)。npm start)。点击 Create Web Service,Render 会完成构建和部署,几分钟后 URL 即可访问。
在控制台中,点击 New + → PostgreSQL。填写名称、区域(最好与你的服务相同)、套餐(入门版 $7/月,对大多数应用已足够)。Render 会在几分钟内完成托管 Postgres 的配置。
连接方式:从 Postgres 控制台复制"Internal Database URL",将其设置为 Web 服务上的 DATABASE_URL 环境变量。内部 URL 仅在 Render 的网络内部有效——它们是私有的,不经过公网传输。如果需要从 Render 外部连接(例如从本地机器),也有"External Database URL"可用,但服务之间应使用内部 URL。
每个服务都有一个 Environment 标签页,用于设置环境变量。敏感变量会被遮掩,非敏感变量不会。根据需要添加 API_KEY=...、NODE_ENV=production 等。保存更改后 Render 会自动重新部署,无需手动触发。
Render 还支持 Environment Groups(环境变量组)——可以将一组变量附加到多个服务。当多个服务需要共享密钥时非常有用(例如 Worker 和 Web 服务都需要数据库 URL)。
服务设置 → Custom Domains → Add Custom Domain。Render 会提供一个 CNAME 目标值。在你的 DNS 服务商处添加:
@)。几分钟后,Render 会完成验证并颁发免费的 TLS 证书(底层使用 Let's Encrypt),自动续期,无需你再操心。
如果你不想让控制台成为配置的唯一来源,可以在仓库根目录放一个 render.yaml:
services:
- type: web
name: my-api
env: node
buildCommand: npm install && npm run build
startCommand: npm start
plan: starter
databases:
- name: my-postgres
plan: starter
提交它。从此以后,git 中的配置就是唯一真相。Render 的"Blueprints"功能会在你创建项目时读取 render.yaml;对于已有项目,可以通过 Settings 切换到这种方式。