ASP.NET と Docker

やっとこさ動きました。青木さんありがとう。

自分でもやってみました。

・事前準備: Docker on Ubuntu なインスタンス (Azure プレビューポータルから作成)

開発環境は一応Windows上のVisual Studio 2015 CTP5です。

新規プロジェクトで普通にASP.NET 5 Starter Web テンプレートを選択します。

できあがったプロジェクトはごくごく普通なMVCなWebアプリケーションです。とりあえずViewなど適当にいじってデバッグしてみて、こいつをDocker on Ubuntuで動作するようにしましょう。

といってもホスト環境に合わせてproject.jsonにKestrelを追加するだけなのですが、それだけだとUbuntu上で kpm restore する際に

INFO[0157] The command [/bin/sh -c kpm restore] returned a non-zero code: 1

とかエラーになって止まります。まぁその他いろいろエラーでてもこんな感じでさっぱり詳細わからない(※調べ方把握できてないだけ)ので困りましたが。

で、修正したproject.jsonはこちら。

{
    /* Click to learn more about project.json  http://go.microsoft.com/fwlink/?LinkID=517074 */
    "webroot": "wwwroot",
    "version": "1.0.0-*",
    "dependencies": {
        "EntityFramework.SqlServer": "7.0.0-beta2",
        "EntityFramework.Commands": "7.0.0-beta2",
        "Microsoft.AspNet.Mvc": "6.0.0-beta2",
        /* "Microsoft.AspNet.Mvc.WebApiCompatShim": "6.0.0-beta2", */
        "Microsoft.AspNet.Diagnostics": "1.0.0-beta2",
        "Microsoft.AspNet.Diagnostics.Entity": "7.0.0-beta2",
        "Microsoft.AspNet.Identity.EntityFramework": "3.0.0-beta2",
        "Microsoft.AspNet.Security.Cookies": "1.0.0-beta2",
        "Microsoft.AspNet.Server.IIS": "1.0.0-beta2",
        "Microsoft.AspNet.Server.WebListener": "1.0.0-beta2",
        "Microsoft.AspNet.StaticFiles": "1.0.0-beta2",
        "Microsoft.Framework.ConfigurationModel.Json": "1.0.0-beta2",
        "Microsoft.Framework.CodeGenerators.Mvc": "1.0.0-beta2",
        "Microsoft.Framework.Logging": "1.0.0-beta2",
        "Microsoft.Framework.Logging.Console": "1.0.0-beta2",
		"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-beta1",
		"Microsoft.CodeAnalysis.CSharp": "1.0.0-beta2",             /* <- 追加 */
		"Kestrel": "1.0.0-beta2",            /* <- 追加 */
		"Microsoft.AspNet.Hosting": "1.0.0-beta2"            /* <- 追加 */
    },
    "commands": {
        /* Change the port number when you are self hosting this application */
        "web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5000",
        "gen": "Microsoft.Framework.CodeGeneration",
		"ef": "EntityFramework.Commands",
		"kestrel": "Microsoft.AspNet.Hosting --server Kestrel --server.urls http://localhost:5004"            /* <- 追加 */
    },
    "frameworks": {
        "aspnet50": { },
        "aspnetcore50": { }
    },
    "exclude": [
        "wwwroot",
        "node_modules",
        "bower_components"
    ],
    "packExclude": [
        "node_modules",
        "bower_components",
        "**.kproj",
        "**.user",
        "**.vspscc"
    ],
    "scripts": {
        "postrestore": [ "npm install" ],
        "prepare": [ "grunt bower:install" ]
    }
}

依存関係にCodeAnalysis.CSharpとKestrel、AspNet.Hostingを追加してます。あとCommandsにKestrelの設定(とバインドするポート番号など)を追記。

あとは青木さんが作ってくれたDockerfileを元にコンテナ作るだけです!

kpm restore で npmパッケージとかも復元する必要があるので、node.jsも入れてたり、microsoft/aspnet:1.0.0-beta2を指定しているあたりが特徴です。

あと注意点はproject.jsonがあるフォルダというかWebアプリケーションとして公開するところをWORKDIRに指定して実行しましょうというところでしょうか、、、

docker build するとkpm restore走って問題なく成功すればOKです

image

あとは実行するだけです。

image

長かった。。変なIssueをaspnet-dockerに登録せずに済みました。

image

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中