前言
將網站開發完成之後,最後都會部署到機器上面來提供服務和測試。如果是部署到雲端平台 (ex:Azure, AWS, GCP…) 可以大幅簡化部署和維護的工作,但這篇選擇使用 Heroku 雲端平台,因為它有長期的免費方案可以使用 (前面提到的平台有提供短期的免費方案) ,包含有 PostgresSQL 資料庫和 SSL憑證,很適合作開發和測試一些小項目💖
Heroku 特點
操作界面簡單,容易上手
支援 Docker 部署
主機 (作業系統 Linux)
提供免費每個月 550 個小時的運行時間,如果開通信用卡,還會額外增加 450 個小時的免費時數
缺點是使用免費額度的版本,如果30分鐘未被使用,主機會自動休眠,重新喚醒大約要20~30秒資料庫 (PostgreSQL)
提供最大連線數20, 資料筆數10000筆的免費使用量
Asp.Net Core 部署 (使用 Docker) 版本 .NET Core 3.1
選擇使用 Docker 的方式部署,如果之後想改成別的雲端平台會比較方便
建立專案時選擇支援 Docker 且為 Linux 版本 (或則自己加上DockerFile)
修改 DockerFile
- 將Entrypoint那行改成Cmd的指令
1
CMD ASPNETCORE_URLS=http://*:$PORT dotnet 專案名稱.dll
到 Heroku 註冊會員並建立好 App
開啟CMD小黑窗,下面開始輸入指令做事
建立 DockerImage
1
docker build -t registry.heroku.com/HerokuAPP名稱/web .
安裝 Heroku CLI
如果以前有安裝過 Heroku CLI 的話,可以先進行更新
1
heroku update
登入 Heroku 和 Heroku Container
1
2heroku login
heroku container:login
- 會彈出登入頁面,點一下即可完成登入,CMD視窗會有登入成功的訊息
執行 DockerFile 建立 Image 並推送
1
heroku container:push web -a HerokuAPP名稱
進行部署
1
heroku container:release web -a HerokuAPP名稱
開啟 APP 測試
- 之後有調整程式碼,要再次部署時只要執行下面指令即可
重新建立Image => 登入Heroku => 登入HerokuContainer => 推送 => 部署
1
2
3
4
5
6先清除舊的image
docker build -t registry.heroku.com/HerokuAPP名稱/web .
heroku login
heroku container:login
heroku container:push web -a HerokuAPP名稱
heroku container:release web -a HerokuAPP名稱
心得
Heroku 部署除了Docker之外還有Git的方式,但相比之下使用Docker比較簡單一些,可移植性也比較好,就選擇Docker的部分來測試。之後有空再來研究,使用GitLab版控並自動部署到Heroku