Skip to content
返回部署

使用 Heroku 部署

经典 PaaS,git push 部署、buildpack、附加功能和 dyno 扩缩。

平台入门

为什么

Heroku 开创 git push 部署,托管附加功能(Postgres、Redis、SendGrid)。Buildpack 系统自动检测语言并处理构建、发布和运行时。

平台即服务采用率 2024 年增长 24%,团队从虚拟机管理转向 git push 部署。the cloud infrastructure market reached $330B in 2024, growing 22% year-over-year (Synergy Research),PaaS 层捕获了大多数新工作负载。

何时使用

快速原型、Ruby/Python/Node 应用和想要简单的团队用 Heroku。注意:2022 年移除免费层。

如何做

1. 创建 — heroku create myapp 2. 部署 — git push heroku main 3. Buildpack — heroku buildpacks:set heroku/nodejs 4. Procfile — web: npm start,worker: npm run worker 5. 附加 — heroku addons:create heroku-postgresql:hobby-basic 6. 扩缩 — heroku ps:scale web=2 worker=1 7. 发布 — heroku run npm run migrate 作为 release 阶段

示例

# Procfile web: npm start worker: npm run worker release: npm run db:migrate # app.json — 一键部署 { "name": "My App", "scripts": { "postdeploy": "npm run db:migrate" }, "env": { "SECRET_KEY": { "generator": "secret" } }, "addons": ["heroku-postgresql"] } # 部署 heroku create git push heroku main heroku addons:create heroku-postgresql:essential-0 heroku ps:scale worker=1

常见问题

  • ⚠构建失败 — buildpack 或 Node 版本错误,package.json 设 engines
  • ⚠Dyno 每 24h 重启 — Heroku 循环 dyno,用 release 阶段做迁移
  • ⚠环境间配置漂移 — 使用基础设施即代码(Terraform/Pulumi)保持 dev/staging/prod 一致

最佳实践

  • ✓Procfile 用 release 阶段 — dyno 启动前运行迁移,原子部署
  • ✓package.json 设 engines — 确保 Heroku 用正确 Node/Python 版本
  • ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求

常见问题解答