ASP.NETをHerokuでDeployしてみた

ASP.NET MVCで作ったWebアプリをHerokuでDeployした方法を紹介します。

環境と前提条件

環境

OS: Mac( MacBook Air (Retina, 13-inch, 2018) )

Visual Studio for Mac 8.9.10 

(面倒なので、以下VSに略します)

前提条件

Herokuアカウント(こちらから作成できます)

Docker(公式はこちら

準備1:.NET MVCアプリを作る

ASP.NET MVCのアプリを作ります。

①VSを立ち上げ、右側の新規ボタンを押します。

②Webとコンソール/ アプリ/ Webアプリケーション(Model-View-Controller)を選択し、次に進みます。

スクリーンショット 2021-05-29 8.03.25

③対象のフレームワークを選択し、次へを押します。

(私は .NET5.0 を選びました)

④プロジェクト名を入力し、作成を押します。

(プロジェクト名は WebTest005 にしました)

⑤ソリューションからProperty/ launchSettings.jsonを開き、必要に応じてURLのパスを変更します。

(私はlocalhost → * に変更しました。必要なかったらごめんなさい)

⑥左上の再生ボタン▶️を押し、ブラウザでパスを入力するとアプリが開きます。

最終的にはこんな感じ

スクリーンショット 2021-05-29 8.17.03

準備2:Dockerの設定

ほぼ公式のまんまですが、一応書きます。

①写真のようにDockerサポートを追加します。

スクリーンショット 2021-05-29 8.21.26

②スタートアッププロジェクトをdocker-composeに変更します。

(選択できない場合は以下の記事を参考にしてください)

③以下のようにDockerfileを編集します。編集部分はFor heroku-container modificationで囲んだ範囲です。WebTest005は自分のアプリ名に変更してください。

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
#-- For heroku-container modification -- START¥
COPY ["WebTest005.csproj", "WebTest005/"]
RUN dotnet restore "WebTest005/WebTest005.csproj"
WORKDIR "/src/WebTest005"
COPY . .
#-- For heroku-container modification -- END
RUN dotnet build "WebTest005.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "WebTest005.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
#-- For heroku-container modification -- START
CMD ASPNETCORE_URLS=http://*:$PORT dotnet WebTest005.dll
#-- For heroku-container modification -- END

参考

④左上の再生▶️ボタンより、Docker上でアプリが動かせます。(パスが変わったはず...)

Herokuにデプロイ

①Herokuにログインします。

②右上のNew / Create new app を選択します。

スクリーンショット 2021-05-29 8.32.36

③アプリ名を入力し、Create app ボタンを押します。

スクリーンショット 2021-05-29 8.35.28

ちなみに、アプリ名は大文字NGらしいです。

スクリーンショット 2021-05-29 8.35.05

④(初回のみ)以下のサイトを参考にHeroku CLIをインストールします。

⑤ターミナルを開き、cd で.csprojがあるディレクトリまで移動します。

↓青色のディレクトリまで

スクリーンショット 2021-05-29 8.40.27

(私の場合アプリがあるディレクトリと違ったので注意です!)

⑥以下のコマンドを1つづつ順に進めていきます。webtest005はアプリ名に変更してください。

heroku login
docker ps
heroku container:login
heroku container:push web -a webtest005
heroku container:release web -a webtest005

ちなみにこのコマンドはHerokuサイト内からDeploy→Container Registryを選択すると閲覧できます。

⑦Herokuサイト右上のOpen appボタンを押すとアプリが開きます。

スクリーンショット 2021-05-29 8.58.34

変更してみる

最後に、アプリをチョロっと変更してみます。

①WebTest005/Views/Home/Index.cshtml を開きます。

②h1タグ内を好きなように加工します。

<h1 class="display-4">Welcome To Heroku made with ASP.NET MVC</h1>

③以下のコマンドを実行します。(ここから最初の時と一緒)

heroku container:push web -a webtest005
heroku container:release web -a webtest005

④Open app よりアプリが開きます。

スクリーンショット 2021-05-29 9.05.57

感想

.NETがHerokuの「主要言語」に入っていないので、.NET系を使うならDockerを利用するのが良さそうです。

この記事が気に入ったらサポートをしてみませんか?