Macで作ったASP.NET MVC CoreのDocker ImageをHerokuで動かす【想像編】
タイトル長杉
最近Azureにハマってます。今回のタイトルはAzureで出来ますし楽ですしやる意味わからんと思う人がいると思いますが、それなりに理由があります。
なぜにへろく?
SSLを使った画面が必要になったためです。
で、SSL化するためにはインフラの選定が必要です。ほぼ稼働しないと考えて良いサイトなので、お金がかからないってのが一番重要でHerokuはHerokuドメインならSSLが付いてきます。AzureもSSLなんですが無料は1日60分です、アホ。有料だと最低でも7000円です、アホ。
いくつか候補をあげました。
・そのままxdomainでSSL化する
ない。絶対にない。有料だし意味わかんない。あ、ちなみにxdomainのPHPサーバで運用してるしょぼアプリです。
・Azure、GCP、AWSのいずれかを使う
あり。でもほとんど稼働しないサイトにお金を使う意味があるのか?
・railsで作ってHerokuにあげる
これかなり有力。今朝までこれで考えてたのでrailsを調べてました笑
・Core MVCのDocker ImageをHerokuで動かす
絶対これ。.Net CoreとDockerとHerokuって言うパワーワードにやられました。
Herokuは月550時間まで無料なので運用費0です。って言うことでDockerで作ってみます。
が
まだ実際に作ってないので想像編です。多少調べたんで作り方を書いて、実際試したときの違いなどを違う記事で書ければと思います。
OSはMacです。WindowsのDocker Imageはてんでダメで動かんとの記事を見たのでこれが良いでしょう。
Docker for Macを入れる
正しくインストールされているか確認する
docker version
HomebrewでHeroku CLI をインストール
brew install heroku/brew/heroku
dotnet new mvc -o contact
いつも思うけど-oオプションが指定された記事少ない!わからんでプロジェクト作成するとカレントに作られてぐしゃぐしゃになるんでちゃんと指定する例があった方が良いと思うの。
プロジェクト発行
dotnet publish -c Release
Dockerファイル作成
FROM microsoft/aspnetcore
WORKDIR /app
COPY . .
CMD ASPNETCORE_URLS=http://*:$PORT dotnet contact.dll
Dockerイメージ作成
docker build contact .
Heroku用のタグ付け
docker tag contact registry.heroku.com/<Heroku アプリ名>/web
デプロイ
docker push registry.heroku.com/<Heroku アプリ名>/web
これで動くのは実証されてるんですが、メールとか動くんかな?まぁ多分詰まるのはここじゃない感じがするけど
<追記>
実際にデプロイまでできたのですが、反映されません。もしかして.net core 2.1だと出来ない!?.net core2.0の記事をみてたから
違いがそこらぐらいしかわからない(´・ω・`)困った。
参考
Deploy asp.net core 2.0 apps on Heroku – Devcenter Square Blog
ASP.NET Core MVC アプリケーションの Docker コンテナを Heroku で動かしてみた - present