より良いエンジニアを目指して

1日1つ。良くなる!上手くなる!

ASP.NET CoreをGoogle App Engineにデプロイ

Google Cloud Next '19に参加しておきながら、全然GCPを勉強していなかったので、以下の記事を試してみることにしました。

ASP.NET CoreのWEBアプリをGAE(Google App Engine)にデプロイするというものです。

codelabs.developers.google.com

f:id:rimever:20190914215024p:plain
Cloud Shellにはdotnetコマンドが使える!

私が試した時(2019/09)は、既にdotnetのVersionが2.1でしたので、コマンドが異なります。

dotnet new -t webではなく、dotnet new mvcです。

f:id:rimever:20190914215250p:plain
dotnet new -t webが動かなかった。

また、Linuxコマンドの知識は必須です。

メインエントリのProgram.csを修正するだけでも苦戦します。

  1. lsでファイル一覧を確認。
  2. (私の経験のある。)vimでファイルを修正。

f:id:rimever:20190914220043p:plain

ベータ版としてコードエディタを使えます。ベータ版とはいえ、簡単な修正と保存は問題なく出来ます。

f:id:rimever:20190914221019p:plain
こちらの方が楽そうです。

すると、いつものページが。

f:id:rimever:20190914221340p:plain

Dockerfileは、以下のようにしました。

FROM mcr.microsoft.com/dotnet/core/aspnet:2.1
COPY . /app
WORKDIR /app

EXPOSE 8080/tcp
ENV ASPNETCORE_URLS http://*:8080

ENTRYPOINT [ "dotnet", "HelloWorldAspNetCore.dll" ]

https://hub.docker.com/_/microsoft-dotnet-core-aspnet/

そして、デプロイ。

f:id:rimever:20190914235843j:plain
せっかくなのでスマホでアクセスしてみた。

感想

なんとなく、GAEのイメージがつかめました。

ビルドしたアプリをDockerfileとapp.yamlを生成して、deployすればいいと。

これなら、手軽にWebアプリも公開出来そうでいいですね。

app.yamlとDockerfileの組み合わせについて

app.yamlを以下のようにruntimeをcustomではなく、aspnetcoreにすれば、Dockerfileはいらない(逆に取り除いてくれとされる)ようです。

runtime: aspnetcore
env: flex

すると、Google Cloud Platform上では、aspnetcoreと表示されるのでこっちの方がよさそうな気もしてます。

f:id:rimever:20190919084554p:plain