1/23/2015

Visual Studio 2015 CTP 5のASP.NET 5プロジェクトをDockerで動かす

 

 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/

image

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を参照してください。

https://github.com/KentaroAOKI/Aspnet5WebApplicationForDocker/compare/01958d6bfb5ca47fb4806d6322ed2536b16b91ba...d25448119ae50dcabd93600343cdd54fe6a8bb12#diff-1

image

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の場合はエンドポイントの設定を適切にすると、下記のようにアプリケーションの実行が確認できます。

image

ではー。