前面讲解了 Fly.io 的初步入门使用,本文讲解在没有 docker 环境情况下部署 go 开发的应用。
项目
这里为了演示方便, 简单使用 go 编写一个:
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 具体内容:
# 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 程序的流程,希望对你们有帮助。