使用 Fly.io 部署
全球 VM 应用部署,Docker,多区域扩缩,Postgres/SQLite。
平台进阶
为什么
Fly.io 部署 Docker 容器到 30+ 区域 VM,全球任播网络。支持 Postgres(HA)、SQLite(litestream)和缩到零,适合靠近用户的全栈应用。
何时使用
需要多区域、Docker 和真实 DB 的全栈应用用 Fly.io。Serverless 避免 — 用 Cloudflare/Vercel。
如何做
1. 启动 — fly launch 创建 Dockerfile + fly.toml
2. 部署 — fly deploy,构建并部署到所有区域
3. 扩缩 — fly scale count 3,运行 3 VM
4. 区域 — fly regions add sjc,ams 多区域
5. Postgres — fly postgres create,跨区域 HA
6. SQLite — fly volume create,litestream 复制
7. 密钥 — fly secrets set KEY=VALUE
示例
# fly.toml
app = "myapp"
primary_region = "iad"
[build]
[http_service]
internal_port = 3000
force_https = true
auto_stop_machines = true
auto_start_machines = true
min_machines_running = 0
# 部署
fly launch # 初始设置
fly deploy # 部署到主区域
fly scale count 3 # 3 VM
fly regions add sjc ams # 多区域
# Postgres
fly postgres create --name mypg --region iad --initial-cluster-size 3
常见问题
- ⚠应用不可达 — fly.toml internal_port 不匹配应用监听端口
- ⚠部署丢 volume 数据 — volume 按区域,部署错区域丢数据
- ⚠环境间配置漂移 — 使用基础设施即代码(Terraform/Pulumi)保持 dev/staging/prod 一致
最佳实践
- ✓设 auto_stop_machines + auto_start_machines — 空闲缩到零省钱
- ✓用 fly postgres 做 HA Postgres — 托管、备份和多区域复制
- ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求