Fly.io - Heroku免費方案的繼任者?
由於heroku在2022年的11月將取消免費方案了,目前最多人推薦的替代方案之一就是fly.io,今天就來試試看fly.io的效果如何
由於heroku在2022年的11月將取消免費方案了,目前最多人推薦的替代方案之一就是fly.io,今天就來試試看fly.io的效果如何
Price
有提供一定限度的免費方案,最多只能同時佈署兩個app,如果有綁信用卡的話可以多獲得一台VM及更多的Volume
如果需要性能更好的機器不一定要改成價格非常昂貴的pro plan,也可以使用加價購的方式來取得更好的機器或是更大的儲存空間
Features
Turboku
有提供服務能直接從heroku遷移到fly.io,但因為沒有直接綁定Github/ Gitlab的repo所以會比在heroku上時還難更新app,如果是比較常更新或是有source code的app建議乾脆直接重新deploy
Code Server
可以快速deploy一個開發環境且幫你做好特定語言需要的設定,但是code server最少需要使用到1GB的ram,所以免費版就和他無緣了
Flyctl
fly.io專為佈署而設計的cli工具,macOS和Linux可以直接用shell script安裝
curl -L https://fly.io/install.sh | sh
裝好後還要先登入才能執行其他指令
flyctl auth login
底下是一些與部署app相關的實用指令:
flyctl deploy
讓你部署設定好的專案flyctl status
可以查看app的狀態flyctl ips list
可以check app使用的IPflyctl open
可以直接打開app的網頁
Deployments
Flask as an Example
範例code
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'server started.'
if __name__ == '__main__':
app.run()
requirements.txt
列出所需套件
Flask==1.1.1
flask_cors==3.0.8
flask_uploads==0.2.1
gunicorn==19.6.0
Procfile
用來啟動web server
web: gunicorn <py檔名>:app
fly.toml (fly.io的設定檔)
用flyctl launch
來產生fly.toml
Deploy app
前面都準備好就可以直接deploy
flyctl deploy
Dockerfile
如果想要部署的app不在支援清單內,可以先寫好Dockerfile讓fly.io能直接build成對應的image來部署
Summary
fly.io確實已經能達到多數heroku提供的功能了,少數像透過按鈕一鍵部署等仍然缺乏,但在付費方案上比heroku彈性且同價位帶的機器性能更好
此外fly.io是能夠取得Persistent Storage Volumes,這樣有助於data的保存,不會像heroku的機器只要一重啟後資料就會消失
Reference
Build, Deploy And Run A Python Application