命令行工具
输入 flynn help
列出所有可用的命令。
安装
OS X 和 Linux 系统中,在终端运行以下命令:
L=/usr/local/bin/flynn && curl -sSL -A "`uname -sp`" https://dl.flynn.io/cli | zcat >$L && chmod +x $L
Windows 系统,在 PowerShell 中运行以下命令:
(New-Object Net.WebClient).DownloadString('https://dl.flynn.io/cli.ps1') | iex
应用程序管理
用法:
flynn apps
列出所有应用程序。
例子
$ flynn apps
ID NAME
f1e85f5392454a329929e3f27f7a5644 gitreceive
4c6325c1f13547059e5496c91a6a97dd router
8cfd94d040b14bd8aecc086c8f5f5e0d blobstore
f488cfb478f54edea497bf6347c2eb80 postgres
9d5be7be873c41b9898032c08aa87597 controller
集群管理
用法:
flynn cluster
flynn cluster add [-f] [-d] [-g <githost>] [--git-url <giturl>] [--no-git] [-p <tlspin>] <cluster-name> <domain> <key>
flynn cluster remove <cluster-name>
flynn cluster default [<cluster-name>]
flynn cluster migrate-domain <domain>
flynn cluster backup [--file <file>]
命令参数
如果不带任何命令参数,将显示配置的集群列表。
- add 增加一个群集到 〜/.flynnrc 配置文件中
选项:
-f, --force 强制添加集群
-d, --default 设置为默认集群
-g, --git-host=<githost> git 主机 (只支持传统的 SSH)
--git-url=<giturl> git URL
--no-git 跳过 git 配置
-p, --tls-pin=<tlspin> 集群 TLS 证书的 SHA256 哈希值
- remove 从 〜/.flynnrc 配置文件中删除集群
- default 不带参数,则显示默认的集群;后面带集群名,则将它设置为默认集群
- migrate-domain 将集群当前的基本域迁移到指定的域。迁移过程中,将为控制器/控制板生成一个新证书,同时会为每个应用添加
<app-name>.<domain>
模式的路由。 - backup 备份集群
当通过 'flynn-host bootstrap --from-backup' 命令创建一个新集群时,该备份可以被恢复。
选项:
--file=<backup-file> 指定备份文件的名称(默认为输出到标准输出)
例子
$ flynn cluster add -p KGCENkp53YF5OvOKkZIry71+czFRkSw2ZdMszZ/0ljs= default dev.localflynn.com e09dc5301d72be755a3d666f617c4600
Cluster "default" added.
$ flynn cluster migrate-domain new.example.com
Migrate cluster domain from "example.com" to "new.example.com"? (yes/no): yes
Migrating cluster domain (this can take up to 2m0s)...
Changed cluster domain from "example.com" to "new.example.com"
创建
用法:
flynn create [-r <remote>] [-y] [<name>]
在 flynn 中创建应用程序。如果没有提供 [<name>] 参数,将生成一个随机名。
如果使用 Git 仓库来创建一个应用,那么名为 ‘flynn’ 的远程仓库连接将被创建或替换,同样允许 git 用这个远程仓库来部署应用。
选项
选项 | 描述 |
---|---|
-r —remote=<remote> | 要创建的 Git 远程仓库名称,空字符串代表使用默认值。 [默认:flynn] |
-y —yes | 如果该仓库已经存在,跳过确认提示 |
例子
$ flynn create
Created turkeys-stupefy-perry
删除
用法:
flynn delete [-y] [-r <remote>]
删除一个应用。假如该应用使用了名为 'flynn' 的远程 git 仓库连接,该连接同样也会被删除。
选项
标志 | 描述 |
---|---|
-r —remote=<remote> | 要删除的 Git 远程仓库名称,没有空字符串。 [默认:flynn] |
-y —yes | 跳过确认提示。 |
例子
$ flynn -a turkeys-stupefy-perry delete
Are you sure you want to delete the app "turkeys-stupefy-perry"? (yes/no): yes
Deleted turkeys-stupefy-perry
部署
用法:
flynn deployment
管理应用的部署
命令参数
不带任何参数,显示已部署列表。
例子
$ flynn deployment
ID STATUS CREATED FINISHED
37a63fb05fe946f18f11f741aed74d60 running 4 seconds ago
51cbf2bba1204e94b1d847ae0122c647 complete 16 seconds ago 14 seconds ago
12875d153f5c4c6cb64e263c4b422e8c failed About a minute ago About a minute ago
21d4a8174a4240a0b1dcb6303f40cad5 complete 4 minutes ago 4 minutes ago
环境
用法
flynn env [-t <proc>]
flynn env set [-t <proc>] <var>=<val>...
flynn env unset [-t <proc>] <var>...
flynn env get [-t <proc>] <var>
管理应用程序的环境变量。
选项
标志 | 描述 |
---|---|
-t —process-type=<proc> | 设置或读取指定进程类型的环境变量 |
命令参数
不带任何参数,显示所有环境变量列表。
- set 设置一个或多个环境变量
- unset 删除一个或多个环境变量
- get 返回环境变量的值
例子
$ flynn env set FOO=bar BAZ=foobar
Created release 5058ae7964f74c399a240bdd6e7d1bcb.
$ flynn env
BAZ=foobar
FOO=bar
$ flynn env get -t web FOO
bar
$ flynn env unset FOO
Created release b1bbd9bc76d6436ea2fd245300bce72e.
导出
用法
flynn export [options]
导出应用配置和数据。
应用的元数据(metadata)、部署策略(deploy strategy)、版本配置(release configuration)、slug、结构(formation)、Postgres 数据库将被导出到一个 tar 压缩文件。
选项
标志 | 描述 |
---|---|
-f —file=<file> | 存储导出数据的文件名(默认为标准输出) |
-q —quiet | 不显示进度 |
git 授权(git-credentials)
用法:
flynn git-credentials <operation>
导入
用法:
flynn import [options]
使用已导出的配置和数据来创建一个新应用。将使用所提供导出文件中的应用的元数据(metadata)、部署策略(deploy strategy)、版本配置(release configuration)、slug、结构(formation)、Postgres 数据库,来构建新的应用。
选项
标志 | 描述 |
---|---|
-f —file=<file> | 数据来源文件名(默认为标准输入) |
-n —name=<name> | 待创建的应用名称(默认为导出文件的原应用名) |
-q —quiet | 不显示进度 |
-r —routes | 导入路由 |
信息
显示应用的信息
flynn info
例子
$ flynn info
=== example
Git URL: https://git.dev.localflynn.com/example.git
Web URL: http://example.dev.localflynn.com
$ flynn -a example info
=== example
Git URL: https://git.dev.localflynn.com/example.git
Web URL: http://example.dev.localflynn.com
安装
启动安装器的 web 界面服务。
flynn install
例子
$ flynn install
停止任务(Kill)
flynn kill <job>
杀掉一个任务进程
资源限制
用法:
flynn limit [-t <proc>]flynn limit set <proc> <var>=<val>...
管理应用程序的资源配置。
选项
标志 | 描述 |
---|---|
-t —process-type=<proc> | 设置或读取指定进程类型的限制 |
命令
不带任何参数,即显示资源限制列表。
- set 设置一个或多个资源限制
例子
$ flynn limit
web: max_fd=10000 memory=1GB
worker: max_fd=10000 memory=1GB
$ flynn limit set web memory=512MB max_fd=12000
Created release 5058ae7964f74c399a240bdd6e7d1bcb
$ flynn limit
web: max_fd=12000 memory=512MB
worker: max_fd=10000 memory=1GB
$ flynn limit set web memory=256MB
Created release b39fe25d0ea344b6b2af5cf4d6542a80
$ flynn limit
web: max_fd=12000 memory=256MB
worker: max_fd=10000 memory=1GB
日志
应用程序的日志流。
flynn log [-f] [-j <id>] [-n <lines>] [-r] [-s] [-t <type>]
选项
标志 | 描述 |
---|---|
-f —follow | 新的日志流 |
-j —job=<id> | 过滤出特定任务的 ID 的日志 |
-n —number=<lines> | 从日志缓冲区中提取至多 N 行日志 |
-r —raw-output | 输出没有前缀的原始日志信息 |
-s —split-stderr | 将标准错误流发送到 stderr |
-t —process-type=<type> | 过滤出特定进程类型的日志 |
元数据
管理应用元数据
flynn meta
flynn meta set <var>=<val>...
flynn meta unset <var>...
例子
$ flynn meta
KEY VALUE
foo bar
$ flynn meta set foo=baz bar=qux
$ flynn meta
KEY VALUE
foo baz
bar qux
$ flynn meta unset foo
$ flynn meta
KEY VALUE
bar qux
pg
flynn pg psql [--] [<argument>...]
flynn pg dump [-q] [-f <file>]
flynn pg restore [-q] [-f <file>]
选项
标志 | 描述 |
---|---|
-f —file=<file>dump | 备份文件的名称 |
-q —quiet | 不显示进度 |
命令
- psql 打开一个 flynn的 Postgres 数据库控制台。可以使用任何有效的 PSQL 命令参数。
- dump 备份 Postgres 数据库。如果没有指定文件,备份将输出到标准输出。
- restore 从数据库备份中还原 Postgres 数据库。如果没有指定文件,将通过标准输入获取还原备份。
例子
$ flynn pg psql
$ flynn pg psql -- -c "CREATE EXTENSION hstore"
$ flynn pg dump -f db.dump
$ flynn pg restore -f db.dump
提供程序
管理与控制器相关的资源提供程序。
flynn provider
flynn provider add <name> <url>
命令
不带任何参数,即显示当前提供程序
- add 添加新提供程序
ps
列出所有 flynn 进程。
flynn ps
例子
$ flynn ps
ID TYPE RELEASE
flynn-bb97c7dac2fa455dad73459056fabac2 web b69d7fb5308a4684a09b160b82d267ec
flynn-c59e02b3e6ad49809424848809d4749a web b69d7fb5308a4684a09b160b82d267ec
flynn-46f0d715a9684e4c822e248e84a5a418 web b69d7fb5308a4684a09b160b82d267ec
发布
管理应用程序的发布。
flynn release
flynn release add [-t <type>] [-f <file>] <uri>
flynn release show [<id>]
选项
标志 | 描述 |
---|---|
-q —quiet | 只打印发布ID |
-t <type> | 发布类型。目前只支持 “docker”。 [默认为:docker] |
-f —file=<file> | 配置文件 |
—json | 打印json格式的配置信息 |
命令
如果不带任何参数,将列出应用相关的所有版本。
- add 添加一个新发布从 Docker 镜像中创建一个新的版本。还可添加文件参数,它是 JSON 格式的配置文件的文件路径。这主要用于指定版本环境和流程(类似于Procfile)。可以使用任何控制版本类型可使用的参数。
- show显示版本信息如果省略ID,则显示当前发布信息。
例子
比如以 flynn/slugbuilder 镜像为基础发布一个 echo 服务器,用来运行 socat。
$ cat config.json
{
"env": {"MY_VAR": "Hello World, this will be available in all process types."},
"processes": {
"echo": {
"cmd": ["socat -v tcp-l:$PORT,fork exec:/bin/cat"],
"entrypoint": ["sh", "-c"],
"env": {"ECHO": "This var is specific to the echo process type."},
"ports": [{"proto": "tcp"}]
}
}
}
$ flynn release add -f config.json https://registry.hub.docker.com?name=flynn/slugbuilder&id=15d72b7f573b
Created release 427537e78be4417fae2e24d11bc993eb.
$ flynn release
ID Created
427537e78be4417fae2e24d11bc993eb 11 seconds ago
$ flynn release show
ID: 427537e78be4417fae2e24d11bc993eb
Artifact: docker+https://registry.hub.docker.com?name=flynn/slugbuilder&id=15d72b7f573b
Process Types: echo
Created At: 2015-05-06 21:58:12.751741 +0000 UTC
ENV[MY_VAR]: Hello World, this will be available in all process types.
仓库
创建一个可以通过 git 来部署应用的仓库。如果没有提供仓库名称,默认使用'flynn'
flynn remote add [<remote>] [-y]
选项
标志 | 描述 |
---|---|
-y —yes | 假如该仓库存在,则跳过确认提示 |
例子
$ flynn -a turkeys-stupefy-perry remote add
Created remote flynn with url https://git.dev.localflynn.com/turkeys-stupefy-perry.git
$ flynn -a turkeys-stupefy-perry remote add staging
Created remote staging with url https://git.dev.localflynn.com/turkeys-stupefy-perry.git
资源
管理应用程序资源。
flynn resource
flynn resource add <provider>
flynn resource remove <provider> <resource>
命令
不带任何参数,即显示资源列表。
- add 通过
为使用应用程序添加一个新资源。 - remove 通过
删除已存在的资源
路由
管理应用程序的路由。
flynn route
flynn route add http [-s <service>] [-c <tls-cert> -k <tls-key>] [--sticky] <domain>
flynn route add tcp [-s <service>] [-p <port>]
flynn route update <id> [-s <service>] [-c <tls-cert> -k <tls-key>] [--sticky] [--no-sticky]
flynn route remove <id>
选项
标志 | 描述 |
---|---|
-s —service=<service> | 路由域的服务名称(默认为APPNAME-web) |
-c —tls-cert=<tls-cert> | TLS 的 PEM 编码证书路径, - 为标准输入(只支持HTTP) |
-k —tls-key=<tls-key | TLS 的 PEM 编码私钥路径, - 为标准输入(只支持HTTP) |
—sticky | 支持基于 Cookie 的粘性路由(只支持HTTP) |
—no-sticky | 不支持基于 Cookie 的粘性路由(只支持更新HTTP) |
-p —port=<port> | 通信端口(只支持TCP) |
命令
不带任何参数,即显示路由的列表。
- add 给应用程序增加路由
- remove 删除路由
例子
$ flynn route add http example.com
$ flynn route add tcp
运行
运行任务。
flynn run [-d] [-r <release>] [-e <entrypoint>] [--] <command> [<argument>...]
选项
选项 | 描述 |
---|---|
-d —detached | 不连接 IO 流运行任务 |
-r <release> | 以版本 ID 来运行(默认为当前应用程序版本) |
-e <entrypoint> | 覆盖版本镜像的默认入口点 |
-l —enable-log | 把输出传入日志流 |
scale
scale 改变一个版本中每种进程的任务数量。省略参数即显示当前 scale。
flynn scale [options] [<type>=<qty>...]
选项
标志 | 描述 |
---|---|
-n —no-wait | 不等待扩展事件发生 |
-r —release=<release> | 待扩展的版本ID(默认为当前应用程序的版本) |
-a —all | 显示所有版本的结构 |
例子
$ flynn scale
web=4 worker=2
$ flynn scale --all
496d6e74-9db9-4cff-bcce-a3b44015907a (current)
web=1 worker=2
632cd907-85ab-4e53-90d0-84635650ec9a web=2
$ flynn scale web=2 worker=5
scaling web: 4=>2, worker: 2=>5
02:28:34.333 ==> web flynn-3f656af6f1e44092aa7037046236b203 down 02:28:34.466 ==> web flynn-ee83def0b8e4455793a43c8c70f5b34e down 02:28:35.479 ==> worker flynn-84f70ca18c9641ef83a178a19db867a3 up 02:28:36.508 ==> worker flynn-a3de8c326cc542aa89235e53ba304260 up 02:28:37.601 ==> worker flynn-e24760c511af4733b01ed5b98aa54647 up scale completed in 3.944629056s
版本
显示flynn版本信息。
flynn version