前面讲解了 Fly.io 的初步入门使用,本文讲解在没有 docker 环境情况下部署 go 开发的应用。
这里为了演示方便, 简单使用 go 编写一个:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| package main
import (
"fmt"
"log"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w,"hello world")
})
log.Println("listening on", 8080)
log.Fatal(http.ListenAndServe(":"+"8080", nil))
}
|
安装 Flyctl 并登录#
这个步骤上篇文章已经介绍过来,还不了解如何安装登录的可以参考前面的文章。
配置 Fly 应用程序#
进入项目的根目录,执行 flyctl launch
,它会根据你输入的配置(主要是应用名,部署区域,是否需要数据库和redis)来生成相应的配置文件,并帮你在远程构建器上打包镜像并部署,如果有 DOCKERFILE 文件就会使用你的进行构建,如果没有就会使用相应的官方文件进行构建镜像.
需要注意的是你的应用需要监听 8080 端口,否则部署时会报错



从日志可以看到打包好的镜像名是 registry.fly.io/cool-grass-2591:deployment-01GHPEDCXBC3K5NAGHNZWKT49H
fly.toml 配置#
我们来看看 flyctl 帮我们生成的 fly.toml 具体内容:
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
| # fly.toml file generated for cool-grass-2591 on 2022-11-13T01:32:35+08:00
app = "cool-grass-2591"
kill_signal = "SIGINT"
kill_timeout = 5
processes = []
[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 status
查看服务的状态

通过 flyctl open
可以在浏览器打开网站。
本文是简单的从 0 至 1 部署一个 go web 程序的流程,希望对你们有帮助。