本篇將會教你如何透過 Docker 部屬 .NET Core 應用程式到 Heroku 上,內容並不包含 Heroku 的註冊與使用、Docker 使用方式。
首先建立一個 ASP.NET Core Web Application 專案,在選擇範本時請開啟 Docker,並且將 Docker Image 環境設定為 Linux,即便你是使用 Windows 來開發應用程式,這邊以 API 範本專案為例。
並將範本建立的 DockerFile 修改一下,此示範專案名稱為 HerokuDockerDeployment,請改成你建立的專案名稱。這邊 Markdown 似乎有跑板問題,建議複製到其他地方察看。
1 | FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base |
開啟 PowerShell
並將目錄切換至專案所在的位置(~/source/repos/<solution-name>/<project-name>
)。
在將 .NET Core app 新增到 Docker Image 前,必須先將它發佈一次。
dotnet publish -c Release
建立 Docker Image。
docker build -t <docker-image-name> .
透過 tag 指令來將 Docker Image 附加到 Heroku 的 Target Image。
docker tag <docker-image-name> registry.heroku.com/<heroku-app-name>/web
接下來需使用 Heroku CLI 來進行 Heroku 的佈署,若沒有安裝請點選連結到官網下載安裝。
登入 Heroku 且登入 Container 註冊表。
heroku login
heroku container:login
建立 Docker Image 並推到 Container 註冊表上。
heroku container:push web -a <heroku-app-name>
上述流程都成功後即可發佈。
heroku container:release web -a <heroku-app-name>
這樣就完成在 Heroku 上部屬 .NET Core 應用程式,開啟 APP 來確認是否有正確運作。
後續換版只需要重複以下行為即可,別忘了將目錄切換至專案所在的位置(~/source/repos/<solution-name>/<project-name>
)。
heroku container:login
heroku container:push web -a <heroku-app-name>
heroku container:release web -a <heroku-app-name>
參考資料
Deploy ASP.NET Core 3.1 Web API to Heroku with Docker – Jakub Wajs
使用 Docker 教學課程將應用程式容器化 - .NET Core | Microsoft Docs