Visual Studio 2015 CTP 5のASP.NET 5のプロジェクトをDockerで動かしてみました。Microsoftオフィシャルのイメージだと、npmとかもろもろ入っていなかったので、microsoft/aspnetをベースイメージとして、新しいkekekekenta/aspnetイメージとして作成しました。
Connectイベントのような、VisualStudioでビルドされたパッケージを直接Docker送るシナリオであればmicrosoft/aspnetでもよいと思います。しかし、ASP.NET 5プロジェクトをGithubに置いてGithubからDockerイメージを作るようなシナリオでは、kekekekenta/aspnetイメージのほうが良いかもしれません。
https://registry.hub.docker.com/u/kekekekenta/aspnet/
Visual Studio 2015 CTP 5のプロジェクトを作成
Visual Studio 2015 CTP 5 から"ASP.NET 5 Starter Web"プロジェクトを使用して新しいプロジェクトを作成します。この自動で作成されるプロジェクトには、Kestrelサーバで動かすためのcommandが設定と、関係するパッケージの設定が入っていませんので、DockerのLinux環境で動かすために必要な設定をproject.jsonに追記します。
ASP.NET 5を動かすために変更する箇所はproject.jsonだけです。変更箇所の差分は下記URLを参照してください。
Dockerfileを用意する
"ASP.NET 5 Starter Web"プロジェクトのアプリケーションDockerのイメージをビルドするために、Dockerfileを用意します。
上記のDockerイメージをベースにして、Visual Studioで作成したプログラムをkestrelで実行するように指定します。下記のDockerfileは、ソリューションにDockerfileを含めたシナリオの例です。
https://github.com/KentaroAOKI/Aspnet5WebApplicationForDocker/blob/master/Dockerfile
FROM kekekekenta/aspnet
ADD ./src/WebApplication /app/
WORKDIR /app
RUN kpm restore
EXPOSE 5004
ENTRYPOINT ["k", "kestrel"]
もし、Dockerイメージをビルドする際に、別のGitリポジトリからソリューションを取得するシナリオの場合は、下記のような内容になります。
https://github.com/KentaroAOKI/goazure2015dockerdemo/blob/master/Dockerfile
動かしてみる
上記で紹介したプロジェクトはGithubにおいてありますので、とりあえす、動いているのを見てみたい場合は、以前のこちらの記事のようにDockerが動くように準備をした後に、下記コマンドでイメージを作成して実行してください。
git clone https://github.com/KentaroAOKI/Aspnet5WebApplicationForDocker.git
docker --tls build -t aspapp Aspnet5WebApplicationForDocker
docker --tls run -d -t -p 8080:5004 aspapp
Azureの場合はエンドポイントの設定を適切にすると、下記のようにアプリケーションの実行が確認できます。
ではー。