tekitoumemo’s diary

思ったことを書くだけ。長文版Twitter

Macで作ったASP.NET MVC CoreのDocker ImageをHerokuで動かす【想像編】

タイトル長杉
f:id:tekitoumemo:20180601214759p:plain
最近Azureにハマってます。今回のタイトルはAzureで出来ますし楽ですしやる意味わからんと思う人がいると思いますが、それなりに理由があります。

なぜにへろく?

SSLを使った画面が必要になったためです。

で、SSL化するためにはインフラの選定が必要です。ほぼ稼働しないと考えて良いサイトなので、お金がかからないってのが一番重要でHerokuはHerokuドメインならSSLが付いてきます。AzureもSSLなんですが無料は1日60分です、アホ。有料だと最低でも7000円です、アホ。

いくつか候補をあげました。

・そのままxdomainでSSL化する
ない。絶対にない。有料だし意味わかんない。あ、ちなみにxdomainのPHPサーバで運用してるしょぼアプリです。
・Azure、GCPAWSのいずれかを使う
あり。でもほとんど稼働しないサイトにお金を使う意味があるのか?
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

ASP.NET Core MVC プロジェクトを作成

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