Preview整个网站还在搭建中,当前包含较多草稿和未完成内容,暂未正式发布。
部署上线

Fly.io 部署指南

全球边缘部署,支持多区域,适合需要低延迟的应用

Fly.io 将应用部署到全球边缘节点,用户访问时自动路由到最近的服务器。

为什么选择 Fly.io

  • 全球边缘:应用运行在离用户最近的数据中心
  • 支持多语言:Node.js、Python、Go、Ruby、Elixir 等
  • 内置数据库:PostgreSQL、Redis
  • Docker 原生:基于 Docker 容器
  • 免费额度:3 个共享 CPU VM,3GB 持久化存储

快速部署

安装 flyctl

# macOS
brew install flyctl

# Linux
curl -L https://fly.io/install.sh | sh

# Windows
iwr https://fly.io/install.ps1 -useb | iex

登录

flyctl auth login

部署应用

# 在项目目录执行
flyctl launch

# 按提示选择:
# - 应用名称
# - 区域(选择离用户最近的)
# - 是否需要 PostgreSQL 数据库
# - 是否需要 Redis

# 部署
flyctl deploy

配置文件

flyctl launch 会生成 fly.toml

app = "my-app"
primary_region = "hkg"  # 香港

[build]
  builder = "heroku/buildpacks:20"

[env]
  PORT = "8080"

[[services]]
  http_checks = []
  internal_port = 8080
  protocol = "tcp"

  [[services.ports]]
    port = 80
    handlers = ["http"]

  [[services.ports]]
    port = 443
    handlers = ["tls", "http"]

使用 Dockerfile

如果项目有 Dockerfile,Fly.io 自动使用:

FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
CMD ["npm", "start"]

配置环境变量

# 设置环境变量
flyctl secrets set API_KEY=your_secret_key

# 查看已设置的变量
flyctl secrets list

# 删除变量
flyctl secrets unset API_KEY

添加数据库

PostgreSQL

# 创建 PostgreSQL 集群
flyctl postgres create

# 连接到应用
flyctl postgres attach --app my-app my-postgres

自动设置 DATABASE_URL 环境变量。

Redis

# 创建 Redis
flyctl redis create

# 连接到应用
flyctl redis attach --app my-app my-redis

多区域部署

将应用部署到多个区域,用户自动路由到最近的:

# 查看可用区域
flyctl platform regions

# 添加区域
flyctl regions add hkg sin nrt  # 香港、新加坡、东京

# 扩展实例
flyctl scale count 3

自定义域名

# 添加域名
flyctl certs add example.com

# 查看 DNS 配置
flyctl certs show example.com

配置 DNS:

A    @    66.241.124.xxx
AAAA @    2a09:8280:1::xxx

查看日志

# 实时日志
flyctl logs

# 查看特定实例
flyctl logs -i instance-id

监控和扩容

# 查看应用状态
flyctl status

# 查看资源使用
flyctl dashboard

# 扩展内存和 CPU
flyctl scale vm shared-cpu-2x --memory 512

# 扩展实例数量
flyctl scale count 3

定价

免费额度:

  • 3 个共享 CPU VM(256MB 内存)
  • 3GB 持久化存储
  • 160GB 出站流量/月

超出后按量付费:

  • 共享 CPU:$1.94/月
  • 专用 CPU:$0.02/小时
  • 内存:$0.0000022/MB/秒

常见问题

应用启动失败

检查:

  • Dockerfile 是否正确
  • 端口配置(Fly.io 使用 PORT 环境变量)
  • 健康检查是否通过

如何设置健康检查

fly.toml 中:

[[services.http_checks]]
  interval = 10000
  grace_period = "5s"
  method = "get"
  path = "/health"
  protocol = "http"
  timeout = 2000

数据库连接慢

  • 确保数据库和应用在同一区域
  • 使用内部网络连接(.internal 域名)

进阶:使用 Fly Machines

Fly Machines 是按需启动的容器,适合间歇性任务:

# 创建 Machine
flyctl machine run . --region hkg

# 停止 Machine
flyctl machine stop machine-id

下一步

目录