iT邦幫忙

2023 iThome 鐵人賽

DAY 18
0
Software Development

Rust Web API 從零開始系列 第 18

Day18 - 佈署到Fly.io

  • 分享至 

  • xImage
  •  

到目前為止,已經完成最基礎的功能,因為自己營運一個伺服器很麻煩,在眾多免費方案之下就選了一些人推薦的fly.io了,免費版本有幾個限制:

  1. 最多使用3台VM
  2. 總共 3GB 資料儲存空間
  3. 160GB 的流量上限
    另外fly.io有提供postgres可以使用,所以應用程式+Database總共佔去2台VM。

發布專案

首先安裝command line工具:

curl -L https://fly.io/install.sh | sh

接下來按照下面

# 如果沒有帳號的話要先註冊一個
flyctl auth signup
# 如果已經有帳號就直接登入吧
flyctl auth login
# 接下來在專案資料夾下達部屬命令
flyctl launch

後續的就按照CLI工具按表操課,網路上已經多有介紹就不贅述了。

Postgres

網路上比較少人提到的是關於Fly.io提供的postgres服務部份,在fly launch的過程中會問你要不要啟用postgres,這時如果選擇是的話就會幫你一併準備一個資料庫服務,再回去應用程式服務的secret區段的話就會發現它幫你把資料庫連線加secret env中了,這一步會幫你產生一個app專用的連線字串:
https://ithelp.ithome.com.tw/upload/images/20230913/20148594SYdc4mF6UE.png
如果事後才決定要啟用資料庫服務的話就需要使用:

# 新增postgres實體
flyctl postgres create
# 將資料庫附加到app
flyctl postgres "postgres服務的名稱" --app "要附加的應用程式"
# 也可以直接幫應用程式加上secret
fly secrets set DATABASE_URL=postgres://example.com/mydb 

不過做到這一步還不要開心的太早,注意一下CLI給我們的database資訊

Postgres cluster marvinhsu-postgres created
  Username:    postgres
  Password:    password
  Hostname:    marvinhsu-postgres.internal
  Flycast:     fdaa:1:b:0:1::a
  Proxy port:  5432

某一次更新之後,fly.io的postgres只能夠使用內網連線,換句話說我無法在開發的時候直接在本地端對資料庫做操作,這時候就要啟用代理:

flyctl proxy 5432:5432 marvinhsu-postgres

這樣就可以把postgres服務連接到本機的5432 port,在本機使用localhost:5432就可以連上DB進行異動了,接下來就是到migration資料夾使用seaORM的指令對資料庫做遷移了。


上一篇
Day17 - 發佈之前,先加個Log吧(2)
下一篇
Day19 - 建立自動化流程
系列文
Rust Web API 從零開始30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言