Fly.io CLI 完整命令参考手册
flyctl v0.3.176 详细使用指南
目录
1. CLI概览
1.1 版本信息
# 查看版本
fly version
# 输出:flyctl v0.3.176 linux/amd64 Commit: 7a4f141d41455520ce2accdf4e8f990618fa72a1 BuildDate: 2025-09-04T22:52:45Z
# 查看帮助
fly help
fly --help
# 查看特定命令帮助
fly deploy --help
1.2 全局参数
# 所有命令通用的全局参数
-t, --access-token string # Fly API Access Token
--debug # Print additional logs and traces
--verbose # Verbose output
-h, --help # help for flyctl
2. 应用部署与管理
2.1 应用管理 (apps)
apps 命令概览
fly apps --help
# 别名:apps, app
创建应用
# 创建新应用
fly apps create my-app
# 创建应用并指定组织
fly apps create my-app --org my-org
# 示例输出:
# New app created: my-app
列出应用
# 列出所有应用
fly apps list
# JSON格式输出
fly apps list --json
# 示例输出:
# NAME OWNER STATUS PLATFORM VERSION LATEST DEPLOY
# my-app personal running v2 123m ago
应用操作
# 打开应用网页
fly apps open
# 指定应用打开
fly apps open my-app
# 重启应用
fly apps restart
# 移动应用到其他组织
fly apps move my-app --org target-org
# 查看应用错误(Sentry集成)
fly apps errors
# 查看应用发布历史
fly apps releases
删除应用
# 删除应用(需要确认)
fly apps destroy my-app
# 强制删除不提示确认
fly apps destroy my-app --yes
# 示例:
# ? Destroy app my-app? Yes
# Destroyed app my-app
2.2 发布管理 (releases)
# 查看发布历史
fly releases
# 示例输出:
# VERSION STABLE TYPE STATUS DESCRIPTION USER DATE
# v123 true deploy successful Deploy image via flyctl user@email.com just now
# v122 false deploy successful Deploy image via flyctl user@email.com 1h ago
# 回滚到上一版本
fly releases rollback
# 回滚到指定版本
fly releases rollback v122
2.3 部署 (deploy)
# 基础部署
fly deploy
# 指定配置文件
fly deploy --config fly.staging.toml
# 远程构建
fly deploy --remote-only
# 指定镜像
fly deploy --image nginx:alpine
# 不构建,仅部署配置
fly deploy --no-build
# 指定策略
fly deploy --strategy rolling
fly deploy --strategy immediate
fly deploy --strategy bluegreen
# 示例输出:
# ==> Building image with Docker
# ==> Pushing image to fly
# ==> Optimizing image
# ==> Creating release v124
# ==> Release v124 created
# ==> Checking status
# You can detach the terminal anytime without stopping the deployment
2.4 应用启动 (launch)
# 交互式创建应用
fly launch
# 不部署,仅创建配置
fly launch --no-deploy
# 指定名称和区域
fly launch --name my-app --region nrt
# 从现有配置创建
fly launch --copy-config --name new-app
# 示例交互过程:
# Creating app in /path/to/project
# Scanning source code
# Detected a Node.js app
# ? Choose an app name (leave blank to generate one): my-awesome-app
# ? Choose a region for deployment: Tokyo, Japan (nrt)
# ? Would you like to set up a Postgresql database now? Yes
# ? Select configuration: Development - Single node, 1x shared CPU, 256MB RAM, 1GB disk
3. 机器管理
3.1 机器概览 (machine)
fly machine --help
# 别名:machine, machines, m
3.2 机器列表和状态
# 列出所有机器
fly machines list
# JSON格式输出
fly machines list --json
# 示例输出:
# ID NAME STATE IMAGE REGION PROCESS GROUP SIZE
# 91855a79f29408 my-app started nginx:alpine nrt app shared-cpu-1x
# 查看机器详细状态
fly machines status 91855a79f29408
# 查看机器配置
fly machines show 91855a79f29408
3.3 机器创建和运行
# 创建机器(不启动)
fly machines create
# 创建并启动机器
fly machines run nginx:alpine
# 指定配置创建
fly machines create --config machine.json
# 指定区域
fly machines create --region nrt
# 指定大小
fly machines create --vm-size shared-cpu-1x
# 指定内存
fly machines create --vm-memory 1024
# 示例配置文件 machine.json:
{
"image": "nginx:alpine",
"guest": {
"cpus": 1,
"memory_mb": 512
},
"services": [
{
"protocol": "tcp",
"internal_port": 80,
"ports": [
{
"port": 443,
"handlers": ["http", "tls"]
}
]
}
]
}
3.4 机器控制
# 启动机器
fly machines start 91855a79f29408
# 停止机器
fly machines stop 91855a79f29408
# 重启机器
fly machines restart 91855a79f29408
# 暂停机器
fly machines suspend 91855a79f29408
# 强制杀死机器
fly machines kill 91855a79f29408
# 示例输出:
# Machine 91855a79f29408 was started
3.5 机器高级操作
# 克隆机器
fly machines clone 91855a79f29408
# 更新机器配置
fly machines update 91855a79f29408 --vm-memory 1024
# 设置机器下线(停止接收流量)
fly machines cordon 91855a79f29408
# 恢复机器上线
fly machines uncordon 91855a79f29408
# 销毁机器
fly machines destroy 91855a79f29408
# 在机器上执行命令
fly machines exec 91855a79f29408 -- ps aux
# 示例执行命令输出:
# USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
# root 1 0.0 0.1 8892 4832 ? Ss 10:00 0:00 nginx: master process
3.6 机器租约管理
# 查看机器租约
fly machines leases 91855a79f29408
# 获取机器租约
fly machines leases acquire 91855a79f29408
# 释放机器租约
fly machines leases release 91855a79f29408
4. 配置与扩容
4.1 应用配置 (config)
# 查看应用配置
fly config show
# 验证配置文件
fly config validate
# 保存当前配置到文件
fly config save
# 示例输出:
# app = "my-app"
# primary_region = "nrt"
#
# [http_service]
# internal_port = 3000
# force_https = true
4.2 扩缩容 (scale)
查看当前资源
# 查看当前扩容设置
fly scale show
# 示例输出:
# VM Resources for app: my-app
#
# Groups
# NAME COUNT KIND CPUS MEMORY REGIONS
# app 1 shared-cpu-1x 1 512 MB nrt
垂直扩容
# 调整内存
fly scale memory 1024
# 调整到特定大小
fly scale vm shared-cpu-2x
fly scale vm performance-1x
# 查看可用VM规格
fly platform vm-sizes
# 示例输出:
# NAME CPUS MEMORY
# shared-cpu-1x 1 256 MB
# shared-cpu-2x 2 512 MB
# performance-1x 1 2048 MB
# performance-2x 2 4096 MB
水平扩容
# 调整实例数量
fly scale count 3
# 指定区域扩容
fly scale count 2 --region nrt
fly scale count 1 --region iad
# 示例:
# Count changed to 3
4.3 环境变量和密钥
密钥管理 (secrets)
# 设置密钥
fly secrets set DATABASE_URL="postgresql://..."
# 设置多个密钥
fly secrets set \
DATABASE_URL="postgresql://..." \
JWT_SECRET="your-secret" \
API_KEY="your-api-key"
# 查看密钥列表(不显示值)
fly secrets list
# 示例输出:
# NAME DIGEST DATE
# DATABASE_URL b8c5b5c5b5c5b5c5... 2025-01-15T10:00:00Z
# JWT_SECRET a1b2c3d4e5f6... 2025-01-15T10:01:00Z
# 删除密钥
fly secrets unset API_KEY
# 从文件导入密钥
echo "DATABASE_URL=postgresql://..." | fly secrets import
# 部署密钥(立即生效)
fly secrets deploy
5. 监控与调试
5.1 日志查看 (logs)
# 查看实时日志
fly logs
# 查看历史日志
fly logs --no-tail
# 过滤特定机器
fly logs --machine 91855a79f29408
# 过滤特定区域
fly logs --region nrt
# JSON格式输出
fly logs --json
# 示例输出:
# 2025-01-15T10:00:00.000Z app[91855a79f29408] nrt [info] Server started on port 3000
# 2025-01-15T10:00:01.000Z app[91855a79f29408] nrt [info] GET / 200 - 15ms
5.2 状态检查 (status)
# 查看应用状态
fly status
# 查看所有实例详细信息
fly status --all
# 示例输出:
# App
# Name = my-app
# Owner = personal
# Hostname = my-app.fly.dev
# Image = my-app:deployment-01HKQM9...
# Platform = machines
#
# Machines
# PROCESS ID STATE REGION CHECKS LAST UPDATED
# app 91855a79f29408 started nrt 1/1 2025-01-15T10:00:00Z
5.3 健康检查 (checks)
# 查看健康检查
fly checks list
# 示例输出:
# Health Checks for my-app
# NAME STATUS MACHINE LAST UPDATED OUTPUT
# my-app passing 91855a79f29408 2025-01-15T10:00:00Z [✓] HTTP GET / 200 OK
5.4 SSH连接 (ssh)
# 连接到机器控制台
fly ssh console
# 连接到特定机器
fly ssh console --machine 91855a79f29408
# 执行单个命令
fly ssh console -C "ps aux"
# 示例连接:
# Connecting to fdaa:0:1a2b:a7b:abc:def:123:456... OK
#
# # 现在你在机器内部
# /app # ps aux
# PID USER TIME COMMAND
# 1 root 0:00 node server.js
SSH证书管理
# 签发新的SSH凭证
fly ssh issue
# 查看SSH证书日志
fly ssh log
# 示例输出:
# SSH certificate for user@example.com issued at 2025-01-15T10:00:00Z
5.5 SFTP文件传输
# 启动SFTP会话
fly sftp shell
# 在SFTP中的操作:
# sftp> put local-file.txt /app/remote-file.txt
# sftp> get /app/remote-file.txt local-file.txt
# sftp> ls /app
# sftp> exit
# 直接使用SSH进行文件传输
fly ssh sftp
5.6 代理连接 (proxy)
# 代理本地端口到远程
fly proxy 8080:80
# 代理到特定机器
fly proxy 5432:5432 --machine 91855a79f29408
# 示例:
# Proxying local port 8080 to remote port 80 on my-app.fly.dev
# Connect to your app via http://localhost:8080/
5.7 控制台访问 (console)
# 在新机器中运行控制台
fly console
# 指定镜像运行控制台
fly console --image ubuntu
# 示例:
# Creating new machine in region nrt
# Connecting to machine... OK
# root@machine:/#
6. 数据库与存储
6.1 PostgreSQL管理 (postgres)
创建数据库
# 创建PostgreSQL集群
fly postgres create --name my-app-db
# 指定区域和规格
fly postgres create --name my-app-db --region nrt --vm-size shared-cpu-1x
# 示例输出:
# Creating Postgres cluster my-app-db in organization personal
# Admin user: postgres
# Admin password: <generated-password>
# Save your credentials in a secure place!
数据库连接
# 连接到数据库
fly postgres connect --app my-app-db
# 连接到特定数据库
fly postgres connect --app my-app-db --database my_database
# 示例连接:
# Connecting to my-app-db.internal:5432... OK
# psql (15.4)
# postgres=#
数据库管理
# 查看数据库列表
fly postgres list
# 查看数据库状态
fly postgres show --app my-app-db
# 重启数据库
fly postgres restart --app my-app-db
# 数据库故障转移
fly postgres failover --app my-app-db
# 示例输出:
# NAME ORGANIZATION STATUS REGION
# my-app-db personal running nrt
数据库配置
# 查看配置
fly postgres config show --app my-app-db
# 更新配置
fly postgres config update --app my-app-db \
--shared-preload-libraries="pg_stat_statements"
# 示例配置:
# shared_buffers = 128MB
# max_connections = 100
# shared_preload_libraries = 'pg_stat_statements'
用户管理
# 创建用户
fly postgres users create my_user --app my-app-db
# 列出用户
fly postgres users list --app my-app-db
# 示例输出:
# USERNAME SUPERUSER DATABASES
# postgres true *
# my_user false my_database
数据库操作
# 创建数据库
fly postgres db create my_database --app my-app-db
# 列出数据库
fly postgres db list --app my-app-db
# 示例输出:
# NAME USERS
# postgres postgres
# my_database postgres,my_user
6.2 数据库备份
# 创建备份
fly postgres backup create --app my-app-db
# 查看备份列表
fly postgres backup list --app my-app-db
# 下载备份
fly postgres backup download backup-id --app my-app-db
# 示例输出:
# BACKUP ID SIZE CREATED AT
# 01HKQM9J7X8QZ9Y8Z9Y8Z9Y8 45MB 2025-01-15T10:00:00Z
6.3 数据导入导出
# 导入数据
fly postgres import --app my-app-db --local-file backup.sql
# 从URL导入
fly postgres import --app my-app-db --url "postgresql://..."
# 示例:
# Importing data to my-app-db...
# Import completed successfully
6.4 应用附加数据库
# 将数据库附加到应用
fly postgres attach my-app-db --app my-app
# 分离数据库
fly postgres detach my-app-db --app my-app
# 示例:
# The following secret was added to my-app:
# DATABASE_URL=postgresql://...
6.5 托管PostgreSQL (mpg)
# 创建托管PostgreSQL
fly mpg create --name my-managed-db
# 查看托管数据库
fly mpg list
# 连接到托管数据库
fly mpg connect my-managed-db
6.6 Volume管理 (volumes)
创建和管理Volume
# 创建Volume
fly volumes create data_volume --size 10GB
# 指定区域
fly volumes create data_volume --size 10GB --region nrt
# 列出Volumes
fly volumes list
# 示例输出:
# ID NAME SIZE REGION ATTACHED TO
# vol_1234567890123456 data_volume 10GB nrt 91855a79f29408
Volume操作
# 查看Volume详情
fly volumes show vol_1234567890123456
# 扩展Volume大小
fly volumes extend vol_1234567890123456 --size 20GB
# Fork Volume
fly volumes fork vol_1234567890123456 --name data_volume_copy
# 删除Volume
fly volumes destroy vol_1234567890123456
Volume快照
# 创建快照
fly volumes snapshots create vol_1234567890123456
# 列出快照
fly volumes snapshots list vol_1234567890123456
# 从快照创建Volume
fly volumes create new_volume --snapshot snap_1234567890123456
# 示例输出:
# SNAPSHOT ID CREATED AT
# snap_1234567890123456 2025-01-15T10:00:00Z
7. 网络与安全
7.1 IP地址管理 (ips)
# 列出IP地址
fly ips list
# 分配IPv4地址
fly ips allocate-v4
# 分配IPv6地址
fly ips allocate-v6
# 分配专用IPv6地址
fly ips allocate-v6 --private
# 释放IP地址
fly ips release 203.0.113.1
# 示例输出:
# TYPE ADDRESS REGION CREATED AT
# v4 203.0.113.1 global 2025-01-15T10:00:00Z
# v6 2001:db8::1 global 2025-01-15T10:00:00Z
7.2 证书管理 (certs)
添加证书
# 添加域名证书
fly certs add example.com
# 添加通配符证书
fly certs add "*.example.com"
# 查看证书列表
fly certs list
# 示例输出:
# HOSTNAME STATUS CREATED AT
# example.com issued 2025-01-15T10:00:00Z
# *.example.com pending 2025-01-15T10:01:00Z
证书操作
# 查看证书详情
fly certs show example.com
# 检查DNS配置
fly certs check example.com
# 查看设置说明
fly certs setup example.com
# 删除证书
fly certs remove example.com
# 示例证书信息:
# Certificate for example.com
# Status: issued
# Type: managed
# Created: 2025-01-15T10:00:00Z
# DNS Provider: lets_encrypt
7.3 WireGuard VPN
# 创建WireGuard配置
fly wireguard create
# 列出WireGuard隧道
fly wireguard list
# 删除WireGuard隧道
fly wireguard remove personal_desktop
# 重置WireGuard对等点
fly wireguard reset
# 示例输出:
# Name: personal_desktop
# Public key: ABC123...
# Config saved to: /path/to/config.conf
7.4 网络诊断
DNS查询
# 使用Fly.io内部DNS查询
fly dig example.com
# 查询特定记录类型
fly dig example.com A
fly dig example.com AAAA
# 示例输出:
# ;; ANSWER SECTION:
# example.com. 300 IN A 203.0.113.1
网络测试
# ICMP ping测试
fly ping example.com
# 指定机器进行ping
fly ping example.com --machine 91855a79f29408
# 示例输出:
# PING example.com (203.0.113.1): 56 data bytes
# 64 bytes from 203.0.113.1: icmp_seq=1 ttl=64 time=25.1 ms
8. 认证与组织管理
8.1 认证管理 (auth)
# 登录账号
fly auth login
# 查看当前用户
fly auth whoami
# 登出
fly auth logout
# 使用令牌登录
fly auth token
# 示例输出:
# You are logged in as user@example.com
8.2 组织管理 (orgs)
# 列出组织
fly orgs list
# 创建组织
fly orgs create my-organization
# 选择默认组织
fly orgs select my-organization
# 邀请成员
fly orgs invite my-organization user@example.com
# 示例输出:
# ORGANIZATION TYPE
# personal personal
# my-organization shared
8.3 API令牌管理 (tokens)
# 创建API令牌
fly tokens create
# 创建只读令牌
fly tokens create readonly
# 创建部署令牌
fly tokens create deploy
# 列出令牌
fly tokens list
# 撤销令牌
fly tokens revoke token_abc123
# 示例输出:
# NAME EXPIRY CREATED
# deploy never 2025-01-15T10:00:00Z
# readonly 30 days 2025-01-15T09:00:00Z
8.4 服务管理 (services)
# 查看应用服务
fly services list
# 示例输出:
# PROTOCOL PORTS
# TCP 80 => 8080 [HTTP,TLS]
# 443 => 8080 [HTTP,TLS]
9. 扩展与第三方集成
9.1 扩展管理 (extensions)
# 查看可用扩展
fly extensions --help
# 别名:extensions, ext
Sentry集成
# 设置Sentry项目
fly extensions sentry create
# 查看Sentry配置
fly extensions sentry status
# 示例输出:
# Sentry project created for my-app
# DSN: https://abc123@o123456.ingest.sentry.io/123456
MySQL数据库
# 创建MySQL数据库
fly extensions mysql create --name my-mysql-db
# 查看MySQL状态
fly extensions mysql status my-mysql-db
# 连接MySQL
fly extensions mysql connect my-mysql-db
Supabase集成
# 创建Supabase数据库
fly extensions supabase create --name my-supabase-db
# 查看Supabase状态
fly extensions supabase status my-supabase-db
# 示例输出:
# Database URL: postgresql://...
# API URL: https://abc123.supabase.co
# API Key: eyJ...
Tigris对象存储
# 创建存储桶
fly extensions storage create my-bucket
# 查看存储状态
fly extensions storage status my-bucket
# 打开存储仪表板
fly extensions storage dashboard
9.2 Redis数据库 (redis)
创建Redis实例
# 创建Redis数据库
fly redis create --name my-redis
# 查看可用计划
fly redis plans
# 示例计划输出:
# NAME MEMORY PRICE/MONTH
# Free 256MB $0
# Basic 1GB $15
# Standard 5GB $60
Redis操作
# 查看Redis列表
fly redis list
# 查看Redis状态
fly redis status my-redis
# 连接Redis
fly redis connect my-redis
# 代理Redis连接
fly redis proxy my-redis
# 示例连接:
# redis-cli -h localhost -p 16379
# 127.0.0.1:16379> ping
# PONG
Redis管理
# 重置Redis密码
fly redis reset my-redis
# 更新Redis配置
fly redis update my-redis --plan Standard
# 打开Redis仪表板
fly redis dashboard
# 删除Redis实例
fly redis destroy my-redis
9.3 对象存储 (storage)
# 创建存储桶
fly storage create my-bucket
# 指定区域
fly storage create my-bucket --region nrt
# 列出存储桶
fly storage list
# 查看存储桶状态
fly storage status my-bucket
# 更新存储桶
fly storage update my-bucket --public
# 打开存储仪表板
fly storage dashboard
# 删除存储桶
fly storage destroy my-bucket
# 示例输出:
# NAME REGION PUBLIC CREATED
# my-bucket nrt false 2025-01-15T10:00:00Z
10. 平台工具
10.1 平台信息 (platform)
# 查看可用区域
fly platform regions
# 查看VM规格
fly platform vm-sizes
# 示例区域输出:
# NAME CODE GATEWAY GPUS CAPACITY
# Atlanta, Georgia (US) atl - 179
# Hong Kong, Hong Kong hkg ✓ - 92
# Tokyo, Japan nrt ✓ - 156
# 示例VM规格输出:
# Machines platform
# NAME CPU CORES MEMORY
# shared-cpu-1x 1 256 MB
# shared-cpu-2x 2 512 MB
# shared-cpu-4x 4 1 GB
# shared-cpu-8x 8 2 GB
#
# performance-1x 1 2 GB
# performance-2x 2 4 GB
# performance-4x 4 8 GB
# performance-8x 8 16 GB
10.2 文档和帮助 (docs)
# 打开文档
fly docs
# 打开特定主题文档
fly docs getting-started
fly docs volumes
# 示例:
# Opening https://fly.io/docs/ in your browser...
10.3 系统诊断 (doctor)
# 运行系统诊断
fly doctor
# 示例输出:
# Testing authentication token... PASSED
# Testing flyctl agent... PASSED
# Testing network connectivity... PASSED
# Testing DNS resolution... PASSED
10.4 应用仪表板
# 打开Web仪表板
fly dashboard
# 打开特定应用仪表板
fly dashboard my-app
# 示例:
# Opening https://fly.io/apps/my-app in your browser...
11. 命令速查表
11.1 常用命令快速参考
🚀 部署相关
fly launch # 创建新应用
fly deploy # 部署应用
fly releases # 查看版本历史
fly releases rollback # 回滚版本
fly status # 查看应用状态
🔧 机器管理
fly machines list # 列出机器
fly machines start # 启动机器
fly machines stop # 停止机器
fly machines restart # 重启机器
fly machines destroy # 销毁机器
📊 监控调试
fly logs # 查看日志
fly ssh console # SSH连接
fly proxy 8080:80 # 端口代理
fly checks list # 健康检查
⚙️ 配置管理
fly scale count 3 # 扩容实例
fly scale memory 1024 # 调整内存
fly secrets set # 设置密钥
fly config show # 查看配置
🗄️ 数据库
fly postgres create # 创建数据库
fly postgres connect # 连接数据库
fly volumes create # 创建存储卷
fly volumes list # 列出存储卷
🌐 网络安全
fly certs add # 添加证书
fly ips allocate-v4 # 分配IP
fly wireguard create # 创建VPN
11.2 命令别名
# 命令别名对照表
fly apps = fly app
fly machines = fly machine = fly m
fly postgres = fly pg
fly volumes = fly volume = fly vol
11.3 常用参数组合
# 查看特定应用状态
fly status --app my-app
# 查看JSON格式输出
fly apps list --json
fly machines list --json
# 指定区域操作
fly scale count 2 --region nrt
fly machines create --region nrt
# 调试模式
fly deploy --verbose --debug
fly logs --verbose
11.4 工作流示例
首次部署工作流
# 1. 创建应用
fly launch
# 2. 设置密钥
fly secrets set DATABASE_URL="postgresql://..."
# 3. 部署应用
fly deploy
# 4. 检查状态
fly status
fly logs
故障排查工作流
# 1. 检查应用状态
fly status
# 2. 查看日志
fly logs --since 10m
# 3. SSH到机器调试
fly ssh console
# 4. 检查健康状态
fly checks list
# 5. 如需要,回滚版本
fly releases rollback
扩容工作流
# 1. 查看当前资源
fly scale show
# 2. 垂直扩容
fly scale memory 2048
# 3. 水平扩容
fly scale count 3
# 4. 验证扩容效果
fly status --all
结语
这份Fly.io CLI命令参考手册涵盖了flyctl v0.3.176的所有主要功能和使用方法。每个命令都包含了:
- 📝 详细语法说明
- 💡 实际使用示例
- 📋 常见参数组合
- 🔍 输出示例展示
使用建议:
- 收藏常用命令:将frequency used的命令加入你的备忘录
- 善用帮助:任何命令都可以用
--help获取详细说明 - 组合使用:很多操作需要多个命令配合完成
- JSON输出:自动化脚本中推荐使用
--json参数
持续学习:
- 定期查看
fly docs获取最新文档 - 使用
fly doctor诊断环境问题 - 关注Fly.io官方更新,命令可能会有新增和变化
文档版本: v1.0
CLI版本: flyctl v0.3.176
更新时间: 2025年01月
维护: 技术团队