命令行工具 # 命令行工具 输入 `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 通过 <provide> 为使用应用程序添加一个新资源。 - remove 通过 <provider> 删除已存在的资源 ## 路由 管理应用程序的路由。 ``` 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 ```