用 fly.io 部署餐廳論壇
🌟須知
主要流程為:
擁有 fly.io 帳號
-> 建立資料庫專案
-> 資料庫雲端建立
-> 針對欲部署的專案進行修改
-> 前往 workblench 連線遠端資料庫建立資料表
-> 測試部署是否成功
環境:
作業系統:Windows 10
專案:Express + Sequelize + MySQL
🌟本文開始
🚩 建立帳戶
fly.io 建立帳戶,並新增信用卡,要新增信用卡才能使用「基本免費部署」服務。
🚩 找尋到「Install flyctl」文件區塊
在 fly.io 文件 中找尋 ( 或用 Search bar 輸入關鍵字 ) 「Install flyctl」文件區塊點進去 ,我這邊是 Windows,所以開啟「命令提示字元」或使用 「VS Code Terminal」輸入以下指令,下載完成建議將「VS Code」關閉,再重啟「VS Code」。
Windows: powershell -Command "iwr https://fly.io/install.ps1 -useb | iex"
Mac: brew install flyctl 或 curl -L https://fly.io/install.sh | sh
🚩 登入 fly.io
終端機輸入下方指令會跳轉到登入 UI 畫面,按登入
fly auth login
🚩 找尋到「Use a MySQL Database」文件區塊
同樣文件「Use a MySQL Database」區塊,跟著文件內容在某個目錄下 ( 不是在專案裡 ),要建立一個名為 my-mysql 的空資料夾 ( 我是建立在跟要部署的專案同一個目錄下 ),手動或用文件提供的指令建立皆可,要取什麼名稱都可以,但希望之後協助能夠更順暢,建議照著 Doc 的名稱走。
//指令也可以直接參考這裡
mkdir my-mysql
cd my-mysql
🚩 VS Code 打開剛剛建立的空資料夾
依序輸入以下指令,並附上成功完成的圖片參考
//輸入此指令,系統會要求你輸入主機名稱,可以按 enter 請系統幫我們設定
fly launch
//1. 此指令我的理解為規劃 database 為 1GB,若有誤再請大大回饋~~ 感恩~~
//2. 輸入此指令完會被要求選擇主機區域,我是選擇 Tokyo 按下 enter,
// 請求區域離主機所在位置(這邊指的是 ToKyo)越遠,使用服務所需的時間就會越長。
fly volumes create mysqldata -- size 1
fly secrets set MYSQL_PASSWORD=password MYSQL_ROOT_PASSWORD=password
🚩 修改「fly.toml」檔案
接著針對因上方指令而產生的「fly.toml」檔案進行修改,記得修改時一定要照「fly.toml」檔案格式進行新增修改,格式可以參照「fly.toml」其他參數寫法,不然會出現錯誤訊息,修改如下
修改完成執行以下指令,這邊附上成功訊息圖片
//成功訊息基本都是差不多在整串訊息的最尾端會有,
//「v + 數字 + deployed + successfully」這樣的訊息組成架構,
//因此後面就不會在重複說明囉~
fly deploy
🚩 前往 fly.io Dashboard 查看建立狀態
成功建立都會有「綠勾勾」,2 GB 應該是當初後續重新下指令我不小心按錯沒有注意到,應該要是「1GB」,朋朋們再留意一下。
🚩 VS Code 打開要部署的專案
跟剛剛的流程蠻像的,輸入「 fly launch」指令建立 fly.toml 檔案,打開 fly.toml 要在這邊建立環境變數 ( 依照你的專案 .env 內容為主,基本上就是複製貼上 xd )、以及資料表 migrate 指令,程式碼如下
🚩 針對 production 環境設定
前往專案的 config.json,針對 production 環境建立資料庫連線相關內容( 因為我是用 sequelize 所以有這個檔,請朋朋依不同專案做調整 ) 如下:
app.js 將 port 3000 改為 8080,程式碼如下
設定完成就可以輸入以下指令,將目前修改內容更新到遠端,一樣到 fly.io Dashboard 查看
fly deploy
🚩 新增資料表
- 由於遠端資料庫不提供直接連線進行操作,因此要使用 fly.io 提供用 localhost 監聽本地端 3306 方式對接遠端資料庫 3306 port。
- 但因為本地端我有下載 MySQL,因此 3306 目前是本地端的 MySQL 正在使用,所以要找替代方案「13306 port」
- 要將預設用本地端 port 3306 換成 13306 port,要如何換呢? Windows 可以透過在終端機輸入下面第一個指令,達到這件事情。
- 若我沒有在本地端安裝 MySQL,則可以直接參考第二個指令~
- 連線成功如下圖
//此指令表示 remote 連線遠端資料庫
1. flyctl proxy 13306:3306 -a <輸入在 my-mysql/fly.toml 的 app 參數欄位的值>
2. flyctl proxy 3306 -a <輸入在 my-mysql/fly.toml 的 app 參數欄位的值>
🚩 前往 Workbench 建立資料表
因為目前文件提供的指令 Windows 需要做一些設定才能使用,解決方案是前往 Workbench 手動建立資料表,資料表成立才能進行 Migrate & Seed 指令,資料表建立 SQL 語法,刷新確認建立成功,記得要確認遠端連線成功 (出現上圖訊息),才能用 Workbench 連線,不然會出現無法連線的錯誤訊息
//資料表名稱要根據 config 為主
create database [這邊是資料表名稱] character set utf8mb4 collate utf8mb4_unicode_ci
🚩 建立種子資料
前面一個步驟,朋朋們應該有發現有出現 migrate 成功的相關訊息,
但因為目前還沒找到可以輸入兩個以上指令的方法,所以要 seed 的指令分到第二次設定執行。
因此接著終端機 Ctrl + C 跳出遠端連線狀態,根據下方內容修改完再「fly deploy」 一次,順利應該會看到 seed 建立成功相關訊息。
🚩 最後打開網址、資料庫操作看看確認剛剛的操作是否成功
根據紅底線路徑找尋專案主機,點選「Hostname」也就是黃線位置就可以打開網址測試囉~
資料來源: