Fly.io 全球容器部署
一句话概述:Fly.io 把你的 Docker 容器部署到全球 35+ 个区域的边缘服务器,自动就近路由用户请求,适合需要全球低延迟的全栈应用,特别是有状态服务(数据库)。
核心知识点
| 概念 | 白话解释 |
|---|
| Fly Machine | Fly 的计算单位,本质是一个轻量虚拟机(microVM) |
| Anycast | 全球任播网络,用户自动连接最近的节点 |
| Fly Postgres | Fly 托管的 PostgreSQL,支持多区域副本 |
| fly.toml | 应用配置文件 |
| flyctl | Fly.io 的命令行工具 |
| 卷(Volume) | 持久化存储,数据不会因重启丢失 |
安装配置
# 安装 flyctl
curl -L https://fly.io/install.sh | sh # Linux/Mac
# Windows: powershell -Command "irm https://fly.io/install.ps1 | iex"
# 注册/登录
fly auth signup # 注册
fly auth login # 登录(打开浏览器)
部署应用
# 在项目目录下
fly launch # 交互式创建应用(自动检测框架、生成 Dockerfile)
# 选择应用名、区域、是否需要数据库
fly deploy # 部署应用
配置文件
# fly.toml
app = "my-app" # 应用名
primary_region = "sin" # 主区域(新加坡)
[build]
dockerfile = "Dockerfile" # 使用 Dockerfile 构建
[http_service]
internal_port = 3000 # 应用监听端口
force_https = true # 强制 HTTPS
auto_stop_machines = "stop" # 无流量时自动停止(省钱)
auto_start_machines = true # 有请求时自动启动
min_machines_running = 0 # 最少运行实例数
[[vm]]
memory = "256mb" # 内存
cpu_kind = "shared" # CPU 类型
cpus = 1 # CPU 核数
基本使用
fly status # 查看应用状态
fly logs # 查看实时日志
fly ssh console # SSH 进入容器
fly scale count 3 # 扩展到 3 个实例
fly regions add hkg # 添加香港区域
fly secrets set API_KEY=xxx # 设置密钥
# 数据库
fly postgres create # 创建 PostgreSQL
fly postgres attach # 连接到应用
# 存储卷
fly volumes create data --size 10 # 创建 10GB 存储卷
常见报错
| 报错信息 | 原因 | 解决方案 |
|---|
No machines in running state | 机器被停了 | fly machine start 或检查 auto_start |
Health check failed | 健康检查不通过 | 检查应用是否正确监听 internal_port |
Out of memory | 内存不够 | fly scale memory 512 增加内存 |
Volume not found | 卷和机器不在同一区域 | 在同区域创建卷 |
| 构建失败 | Dockerfile 有问题 | 本地先 docker build 测试 |
速查表
fly launch # 初始化应用
fly deploy # 部署
fly status # 状态
fly logs # 日志
fly ssh console # SSH 进容器
fly scale count N # 扩缩容
fly secrets set K=V # 设密钥
fly regions add XXX # 加区域
fly postgres create # 创建数据库
fly volumes create # 创建存储卷
fly open # 浏览器打开应用
# 免费额度:3 个 shared-cpu-1x/256MB 机器 + 3GB 持久卷
参考:Fly.io 官网 | Fly.io 文档 | 定价