前往
大廳
主題

FastAPI佈署至Railway.app心得

Treeboy | 2022-12-14 21:37:59 | 巴幣 204 | 人氣 468

11月28日,Heroku不再提供免費方案了,這讓其他雲端平台開始推銷自家的產品,Railway.app就是其中的一員,最先推薦Heroku用戶轉移到Railway,連教學手冊都有了。目前的免費方案是提供了每個月提供500小時的運行時間、1GB的儲存空間、512 RAM與2顆vCPU,對一般的求職者與學生來說,算蠻夠用的了,可以發布作品供人參考。

1.佈署前注意事項

1.靜態文件讀取路徑
Railway.app支援Fastapi和jinja2模板,但目前觀察到的問題是jinja2的"url_for()"功能會讓Railway讀取不到,所以直接改成「相對路徑」,直接提供檔案的路徑會比較容易讀取到靜態文件。

比如:
有一段程式碼用到了url_for(),要讀取一個叫static的檔案中的css。
<link href="{{ url_for('static', path='/css/styles.css') }}" rel="stylesheet">

如果要正常讀取的資料的話就要改成這樣子。
<link href="static/css/styles.css"  rel="stylesheet">

圖片範例

2.增加requirement.txt、runtime.txt與Procfile這三個檔案

requirement.txt-管理模組

runtime.txt-告訴系統你使用的版本

Procfile定義uvicorn指令
假如你的主程式(main)放在名叫app的資料夾,那你可以這樣寫,和Heroku一樣。
web: uvicorn app.main:app

以上做完之後,就可以push到github了

2.正式佈署雲端

第一步、建立新專案(+New Project)

第二步、選擇你要的服務,要從github進行佈署,選第一個。

第三步、選擇你要佈署的專案

第四步、DEPLOY NOW

第五步、等待上傳

第六步、上傳成功,成功之後,可以點選左邊的網址點入,看看有沒有成功。

挺成功的
之後每當你將程式碼推到github的時候,他都會自動更新,
這功能其實已經取代了github actions了,可以自動佈署。



以上是將fastapi上傳到railway的做法,以及fastapi無法正常讀取靜態文件的解法。
railway有蠻多功能可以玩的,像是內建的資料庫,不過改天會來玩玩看。



創作回應

Tsukasa
2022-12-15 07:17:12
Treeboy
[e12]
2022-12-15 18:37:58

更多創作