Blogger Syntax Highliter

Friday, January 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

ではー。

Sunday, January 18, 2015

GoAzure 2015 のAzure Active Directoryのセッションについて

 

 2015年1月16日に渋谷でGoAzure 2015が開催されました。私は亀渕さんと一緒にテクニカルトラックを担当して、Infrastructure as Codeとアプリケーション開発者のためのAzure Active Directoryのセッションのスピーカーを担当しました。

10911477_10205047578604118_6846605222062117637_o

 IMG_0881

 スペシャルゲストとして安納さんにも参加いただき、両セッションとも満席でした!

10704318_10205047587324336_1969556084027248771_o

 

1.はじめに、Infrastructure as Code for Azure

 Infrastructure as Code for Azureのセッションは、亀渕さんメインでした。資料はこちら。Resource ManagerでDrupalを構築したり、DockerでASP.NET 5を構築したり。

ブログがありますので、こちらをご参照ください。

https://buchizo.wordpress.com/2015/01/18/goazure-2015-2/

 

2.次に、アプリケーション開発者のためのAzure Active Directory

 アプリケーション開発者のためのAzure Active Directoryの資料はこちら。サーバ側のIdentityライブラリのWIF、Katana middlewareや、ホームレルムディスカバリの動作の紹介とか。クライアント側ではADALとGraph Clientライブラリの紹介とか。

セッションデモで紹介したソースコードは、下記のURLから確認することができます。

 

Katana middlewareに関するコード

 Visual Studioの新規プロジェクトで、AuthenticationをIndividual User Accountsで作成した後に、Startup.Auth.csにIdPの設定をします。WsFederationAuthenticationNotificationsでは、ホーム・レルム・ディスカバリをスキップするように書いています。

https://github.com/KentaroAOKI/GoAzureAzureADSingleKatana/blob/master/WebAppAzureADSingleKatanaGoAzure/App_Start/Startup.Auth.cs

ADALとGraph Clientに関するコード

 こちらはWPFのアプリケーションとして書いておりますが、直接Graph APIに接続する場合と、Graph Client ライブラリを使う場合で書かれています。LINQを使ってGraph APIにアクセスしています。

https://github.com/KentaroAOKI/GoAzureWpfApp/blob/master/WpfAppGoAzure/MainWindow.xaml.cs

 

さいごに

 GoAzureでは、多くの方にお願いしたり、助けていただいたり、打ち合わせしたり、合宿したり。得上さんや富樫さんもお忙しいところセッションを快く引き受けていただいたり。みんなで走りぬいた感じがありました。また、会場に来ていただいた方々とも一体感があって、非常に熱いイベントでした。

 さいごに、亀渕さんありがとう!そして、安納さん、突然の無理なお願いありがとうございました!今後ともよろしくです!