前言

最近在群里看到群友提到了 Fly.io 这个 应用部署平台,相比其它平台,Fly.io 提供了数据库。本篇文章我就来简单介绍如何使用 Fly.io。

安装 flyctl

Flyctl 是一个应用命令行工具,可以让你很方便的从创建用户、创建应用并部署应用。

Windows 安装

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

Linux 安装

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

MAC 安装

1
brew install flyctl

或者

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

注册 Fly.io 账号

使用 flyctl auth signup 命令进行用户注册,你可以使用电子邮件注册,也可以使用 Github 账号进行登录。

登录账号

使用 flyctl auth login 命令登录你的 Fly.io 账号,由于我没有 Fly.io 账号,前面注册时就会登录,可以直接跳过这步。

启动应用程序

接下来我们就可以进行应用的部署了,Fly.io 使用的是 docker 镜像的方式进行应用部署的,由于我本地环境的限制,本文我使用一个基础的 flyio/hellofly:latest 镜像进行部署使用。

每个应用使用 fly.toml 配置文件来告诉 Fly.io 如何进行部署。我们使用 flyctl launch 命令生成相应的配置文件。

1
flyctl launch --image flyio/hellofly:latest

创建过程中会提醒输入应用名,部署的地域和是否使用数据库,我这里使用自动生成的用户名,部署在新加坡,不使用数据库。

生成的配置文件如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# fly.toml file generated for long-silence-8142 on 2022-10-23T00:05:25+08:00

app = "long-silence-8142"
kill_signal = "SIGINT"
kill_timeout = 5
processes = []

[build]
image = "flyio/hellofly:latest"

[env]

[experimental]
allowed_public_ports = []
auto_rollback = true

[[services]]
http_checks = []
internal_port = 8080
processes = ["app"]
protocol = "tcp"
script_checks = []
[services.concurrency]
hard_limit = 25
soft_limit = 20
type = "connections"

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

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

[[services.tcp_checks]]
grace_period = "1s"
interval = "15s"
restart_limit = 0
timeout = "2s"

使用 flyctl deploy 即可部署我们的应用程序。这将查找配置文件并在平台进行部署程序。

img.png

检查应用程序状态

通过 flyctl status 可以检查部署的应用程序的状态

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
App
  Name     = long-silence-8142
  Owner    = personal
  Version  = 0
  Status   = running
  Hostname = long-silence-8142.fly.dev
  Platform = nomad

Deployment Status
  ID          = c25f5f0e-374b-95b5-9f96-820b2f620c53
  Version     = v0
  Status      = successful
  Description = Deployment completed successfully
  Instances   = 1 desired, 1 placed, 1 healthy, 0 unhealthy

Instances
ID              PROCESS VERSION REGION  DESIRED STATUS  HEALTH CHECKS           RESTARTS        CREATED
88ae291a        app     0       sin     run     running 1 total, 1 passing      0               1m41s ago

可以看到我们的程序使用了 long-silence-8142.fly.dev DNS 主机名进行部署,应用程序在新加坡地区运行。我们通过浏览器访问https://long-silence-8142.fly.dev/ 可以看到正确的页面。

小结

本篇文章主要介绍了 Fly.io 平台,并进行简单的使用,接下来还会有对这个平台深入研究的文章。

参考