使用Fly.io部署MinIO对象存储服务

前面的文章讲了Fly.io 的入门使用和如何使用 Fly.io 部署 go 开发的应用程序。今天我们来继续讲解使用 Fly.io 部署 对象存储服务 MinIO. MinIO 是什么我就不过多介绍了, 接下来我们就进入正题,进行 MinIO 服务的部署。 准备 Dockerfile 文件 我们先准备 MinIO docker 部署相关的文件, 我们使用官方的镜像进行部署, Dockerfile 文件内容如下: FROM minio/minio CMD [ "server", "/data", "--console-address", ":9001"] MinIO 的数据文件将存储在 data 目录下,指定 9001 为 web 控制台的端口,如果不指定将会使用随机端口。 初始化 Fly.io 应用 接下来像以前一样使用 flyctl launch 命令进行应用的初始化。 我们照常不使用数据库,不立即部署,生成的配置如下: # fly.toml file generated for twilight-lake-5450 on 2022-11-19T22:34:39+08:00 app = "twilight-lake-5450" 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" 如果我们要限制从公网连接 MinIO ,只允许和 MinIO 使用相同网络的应用访问,只要删除 [[services]] 下的内容即可。 ...

十一月 19, 2022 · overstarry

Fly.io部署go应用

前面讲解了 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" 主要就是一些常规的服务端口配置等。 ...

十一月 12, 2022 · overstarry

Fly.io初体验

前言 最近在群里看到群友提到了 Fly.io 这个 应用部署平台,相比其它平台,Fly.io 提供了数据库。本篇文章我就来简单介绍如何使用 Fly.io。 安装 flyctl Flyctl 是一个应用命令行工具,可以让你很方便的从创建用户、创建应用并部署应用。 Windows 安装 iwr https://fly.io/install.ps1 -useb | iex Linux 安装 curl -L https://fly.io/install.sh | sh MAC 安装 brew install flyctl 或者 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 命令生成相应的配置文件。 ...

十月 22, 2022 · overstarry