読者です 読者をやめる 読者になる 読者になる

銀の光と碧い空

クラウドなインフラとC#なアプリ開発の狭間にいるエンジニアの日々

RHEL7 上で ASP.NET CoreCLR の dockerイメージを試してみる

.NET Core RHEL7

最新の ASP.NET Coreの状況どうなっているのかなあということでdockerイメージで試してみました。あくまでdocker上での動作なので、RHEL上での.NET対応とは別の話です。

dockerをセットアップする

まずはdockerのドキュメントに従ってセットアップします。

docs.docker.com

実際にはこんな感じ

# yum update
#  tee /etc/yum.repos.d/docker.repo <<-EOF
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF
# yum install docker-engine
# systemctl enable docker 
# systemctl start docker 

あとはドキュメントに従ってdockerを軽く動かしてみてもいいでしょう

ASP.NET Coreのdockerイメージをサンプルコードで起動する

ASP.NET Coreのコンテナイメージはここにあります。

https://hub.docker.com/r/microsoft/aspnet/

RC1-finalとRC1-update1があって、どっちが最新なんだという状態なんですが*1、RC1-update1がより新しいです。

サンプルプロジェクトは書いてもいいですが、ASP.NETのGitHubにも公開されています。

github.com

# yum install git
# git clone https://github.com/aspnet/Home.git aspnet-Home
# cd aspnet-Home/samples/1.0.0-rc1-update1/HelloWeb/
# vi Dockerfile
# docker build -t myapp .
# docker images
# docker run -t -d -p 80:5004 myapp

以前のリポジトリ構造にはなかったのですが samples の下にバージョン?ごとのディレクトリが分かれています。この中のHelloWebを選びます。 Dockerfileもあるのですが、イメージをcoreclr ベースのものに変更してみました。

FROM microsoft/aspnet:1.0.0-rc1-update1-coreclr

COPY . /app
WORKDIR /app
RUN ["dnu", "restore"]

EXPOSE 5004
ENTRYPOINT ["dnx", "-p", "project.json", "web"]

ENTRYPOINTも以前はkestrelと指定していた気がしますが、webになっています。 これでdockerを動かしているRHELの80番ポートに接続すればいつもの画面が表示されるはずです。

f:id:tanaka733:20160410235022p:plain

あと中身ですが、dnvm は 1.0.0-rc2-15546、dnxとdnuは 1.0.0-rc1-16231 になってました。

なお最初にちょっと書いた、RHELでの.NET対応の最新情報については、Buildでの概要はこちらのエントリにあります。

developers.redhat.com

また、4/12 12pm - 2pm EDT、JSTだと4/13 1:00AM からRHEL上の.NETについてなにかしらWebinarが行われる予定になっています。詳細は下記のリンクからRed Hat Developersに登録・ログインして、確認・申し込みしてください。

Red Hat Developers Topic: .NET

*1:そもそもRCとはという疑問もある