- 概述最近看技术论坛,发现提到 fly.io 的次数越来越多了。
1. 概述
最近看技术论坛,发现提到 fly.io 的次数越来越多了。 fly.io 是一个容器化的部署平台,只需要一个Dockerfile文件就能部署代码到 fly.io 的服务器上,同时还自动生成域名。其他的好处多多,我根据自己体验,我总结成了下面的这些条:
有免费使用的额度。不填写信用卡信息可以创建一个 App,完全不收费;填写信用卡信息后每月有一定额度的免费流量,超过额度会额外收费。所以想做个小 demo 完全可以不填信用卡试用。
自动生成域名。比如你创建一个名字叫my_demo的 App,那么部署完成后,就会生成my_demo.fly.dev的域名,可以全球访问,不用自己单独买域名了。
可以 SSH 连接进入服务器。部署完成后,可以通过flyctl ssh console 命令登录部署的服务器,所以相当于你有了一台免费的 VPS,可以做你想做的任何事情。
部署简单,采用flyctl 命令集合统一部署; 支持各种语言的各种框架来搭建部署环境,能自动识别当前目录下代码所采用的是哪个框架,自动部署。
下面简单记录一下使用的流程和一些教程里面没提及的使用命令。
2. 部署一个应用
这里以 Python 的 Flask 框架为例,进行部署的步骤总结,其实 fly.io 支持很多框架,可以在这里查看。
2.1 安装 flyctl
首先需要安装 flyctl 这个工具:
Mac:
brew install flyctl
Linux:
curl -L https://fly.io/install.sh | sh
Windows:
在 Powershell 中运行下面的命令:
iwr https://fly.io/install.ps1 -useb | iex
如果执行flyctl version 不报错,就说明安装成功了。
一个小技巧,flyctl 还有个 alias fly,敲起来更简短些。
安装这个工具是一次性的,后面不需要再操作
2.2 创建并登录账号
创建账号:
fly auth signup
会打开网页,选择自己要创建账号的方式,GitHub 账号或者邮箱等。
创建完成后登录账号:
fly auth login
2.3 先在本地将 Flask demo 跑起来
这里采用 fly.io 提供的 Flask demo 代码,先在本地跑起来:
git clone https://github.com/fly-apps/python-hellofly-flaskcd python-hellofly-flaskpython -m venv flask-envsource flask-env/bin/activatepython -m pip install -r requirements.txtFLASK_APP=hellofly flask run
然后访问http://127.0.0.1:5000 就能看到网站,说明本地搭建成功了。
2.4 部署到 fly.io
在当前目录下,执行fly launch,进入交互式界面创建 App:
flyctl launchCreating app in /Users/username/project/demo/flyio_demo/python-hellofly-flaskScanning source codeDetected a Python appUsing the following build configuration: Builder: paketobuildpacks/builder:base? Overwrite "/Users/username/project/demo/flyio_demo/python-hellofly-flask/Procfile"? No? App Name (leave blank to use an auto-generated name): treeholeAutomatically selected personal organization: username? Select region: hkg (Hong Kong, Hong Kong)Created app treehole in organization personalWrote config file fly.toml? Would you like to set up a Postgresql database now? NoWe have generated a simple Procfile for you. Modify it to fit your needs and run "fly deploy" to deploy your application.
然后执行flyctl deploy 来将 Appb 部署到 fly.io 的服务器上:
flyctl deploy
执行成功后,可以用flyctl open来打开浏览器,访问自己部署的 App,网址是appname.fly.dev。
如果后面有源码或者配置的修改,可以多次执行flyctl deploy,会生成新的版本 v0,v1, v2 依次往下,往 fly.io 上部署。
接下来就是修改你的 Flask 源代码,完成更复杂有真正意义的功能了。
2.5 别的有用的 flyctl 命令
查看 App 状态: flyctl status
查看 App 信息: flyctl info
查看 App 列表: flyctl apps list
查看 App 的 IP: flyctl ips list
销毁某个 App: flyctl apps destroy <appname>
3. 登录部署机器
机器部署完成后,可以通过flyctl ssh console来登录机器,登录后就跟普通 Linux 机器的使用是一样的了,可以随意探索。
4. 复制部署机器上的文件到本地
在一个终端输入下面的命令来代理端口
fly proxy 10022:22
然后保持上面的终端打开,在另一个终端输入下面的命令:
scp -P 10022 root@localhost:/path/of/file/on/vm /path/on/local
修改文件的路径就能将文件复制过来