- 追加された行はこの色です。
- 削除された行はこの色です。
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。
-戻る
--[[Visual Studio]]
--[[Docker for Windows]]
--[[Hyper-V コンテナ]]
--[[ASP.NET Core]]
---[[ASP.NET Coreの開発]]
---[[ASP.NET Coreのデプロイ]]
* 目次 [#i04718e7]
#contents
*概要 [#z33068ce]
-[[Hyper-V コンテナ]](若しくはMicrosoft Azure Containers)~
'+ [[Docker for Windows]]を使用して、[[ASP.NET Core]]のデバッグ実行が可能。
-[[ASP.NET Coreの開発]]や[[ASP.NET Coreのデプロイ]]を考えていてココに行き着いた。
*手順 [#ed1a49b7]
以下の手順で検証・評価した。
**環境 [#f9c27a4b]
-Win 10 Pro
-Hyper-Vの有効化
-VS 2017 Community
-.NET Core 2.0
**プロジェクトの作成 [#m5187e0f]
[[ASP.NET Core MVC]]アプリケーションの作成
-[[Docker>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Docker]]サポートなし
-認証なし
**プロジェクトの設定 [#tf9569f1]
-プロジェクトを作成した後にプロジェクトを右クリックしてDockerサポートを追加
#ref(1.png,left,nowrap,手順1,60%)
-[[Hyper-V コンテナ]]上で動作するOS(Windows or Linux)を選択(ここではLinuxを選択)。
#ref(2.png,left,nowrap,手順2,60%)
**インストレーション [#d15a687c]
***[[Docker for Windows]] [#r652fce4]
-[[Docker for Windows]]のインストール(ダウンロードに少々時間がかかる)
#ref(3.png,left,nowrap,手順3,60%)
-[[Docker for Windows]]のインストール・ウィザード~
([[Docker>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Docker]] ≒ Linuxコンテナなので下のCheck Boxは外しておく)
#ref(4.png,left,nowrap,手順4,60%)
-[[Docker for Windows]]のインストール完了
#ref(5.png,left,nowrap,手順5,60%)
***Docker CE for Windows [#p9e6113e]
-デバッグ実行しようとすると、以下のエラー・メッセージが表示されるので、~
「https://go.microsoft.com/fwlink/?linkid=847268」から、Docker CE for Windowsをインストールする。
**デバッグ実行の準備 [#n341b221]
-デバッグのドロップダウン・リストから[[Docker>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Docker]]を選択した状態でデバッグ実行しようとすると、以下のエラー・メッセージが表示されるが、~
Docker CE for Windows(Docker Community Edition for Windows)はインストール済みであるので、PCの再起動を行ってみる。
#ref(6.png,left,nowrap,手順6,60%)
-再起動後、[[Hyper-V]]上にLinux VMを確認できる。
#ref(7.png,left,nowrap,手順7,60%)
-再度デバッグ実行を行うと、以下のエラー・メッセージが表示される。
#ref(8.png,left,nowrap,手順8,60%)
-エラー・メッセージが以下のように変更される。
#ref(9.png,left,nowrap,手順9,60%)
-暫く経つと、以下のダイアログが表示された。OKを押下して再起動する(再起動に少々時間がかかる)。
#ref(10.png,left,nowrap,手順10,60%)
-再起動を行うと、以下のダイアログボックスが表示されている(ログインはしなくてもいい)。
#ref(11.png,left,nowrap,手順11,60%)
-この時点で、以下のdockerコマンドをcmdから実行すると、~
dockerコマンドが適切に実行され結果が返ることを確認する。
> docker version
> docker run hello-world
-デバッグ実行を開始すると、以下のcmdが起動し「何か」がダウンロードされ、
#ref(12.png,left,nowrap,手順12,60%)
-次いで、以下のエラー・メッセージが表示されるので、
#ref(13.png,left,nowrap,手順13,60%)
-メッセージ通り、~
Docker CE for Windows の設定で、ボリューム共有を有効にする。~
管理者アカウントのCredentialの入力を求められるので入力を行う。
#ref(14.png,left,nowrap,手順14,60%)
-設定完了後、再度デバッグ実行を行うと、以下のダイアログが表示されるので、~
[アクセスを許可する]ボタンを押下し、組込みVPNツールのリスニング・ポートを開放する。~
これにより、アプリケーションが[[Docker>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Docker]]で起動し、デバッグが開始される。
#ref(15.png,left,nowrap,手順15,60%)
**デバッグを行う。 [#xe83e990]
***ブレークポイントを設定してデバッグ実行する。 [#vf5605d5]
-ブレークポイントを設定して実行すると、~
以下のように、適切にデバッグ実行されていることを確認できる。
#ref(16.png,left,nowrap,手順16,60%)
-本当にLinux上で動いているか心配なので、念のため、以下で確認する。
#ref(17.png,left,nowrap,手順17,60%)
***環境についての確認を行う。 [#b6ded901]
-[[Docker>https://dotnetdevelopmentinfrastructure.osscons.jp/index.php?Docker]]側は、
--Webサーバ:[[Kestrel>ASP.NET CoreのWebサーバ#c9a915ba]]
--DB:ホスト側のDB
で動作するものと思われる。
-後者のDBへのアクセスが可能かどうかDBMSアプリケーションを使用して確認する。~
(DBMSアプリケーションとしては、[[ASP.NET Core]]対応されたOpen棟梁テンプレートを使用する。)
-・・・
*参考 [#x2d9b382]
-c# - Remote debugging asp.net core on linux server - Stack Overflow~
https://stackoverflow.com/questions/42483122/remote-debugging-asp-net-core-on-linux-server
-Windows 10 に Docker for Windows をインストール|No IT No Life - おすぎやん サーバの設計・構築~
https://server-network-info.blogspot.jp/2017/09/windows-10-docker-for-windows.html
**Microsoft Docs [#t0c26e72]
-Visual Studio Tools for Docker と ASP.NET Core~
https://docs.microsoft.com/ja-jp/aspnet/core/host-and-deploy/docker/visual-studio-tools-for-docker
-Visual Studio Tools for Docker (Windows 上の Visual Studio) を使用~
https://docs.microsoft.com/ja-jp/dotnet/standard/containerized-lifecycle-architecture/design-develop-containerized-apps/visual-studio-tools-for-docker
--ローカルの Docker コンテナーでアプリをデバッグする~
https://docs.microsoft.com/ja-jp/azure/vs-azure-tools-docker-edit-and-refresh
--リモート Docker ホストへの ASP.NET Core Linux Docker コンテナーのデプロイ~
https://docs.microsoft.com/ja-jp/azure/vs-azure-tools-docker-hosting-web-apps-in-docker
**きよくらの備忘録 [#k372b16f]
-Docker for Windowsを使用したASP.NET Core のデバッグ実行~
http://kiyokura.hateblo.jp/entry/2016/10/19/225243
**銀の光と碧い空 [#b34aa8fb]
-Visual Studio Tools for Docker が ASP.NET CoreのDockerデバッグ実行している仕組みを追ってみた~
http://tech.tanaka733.net/entry/research-docker-debug-in-visual-studio-tools-for-docker
-Visual Studio から AzureやWindows以外のdocker containerで走るASP.NET Core をリモートデバッグする~
http://tech.tanaka733.net/entry/remote-debug-aspnetcore-on-docker-from-visual-studio
-VisualStudio 2017 RC3 から .NET Core on RHEL にリモートデバッグする~
http://tech.tanaka733.net/entry/remote-debug-dotnetcore-on-rhel-from-vs2017rc3
-.NET Core がLinuxでどのように動いているか、~
またわれわれはどのようにデバッグするのか~
Issue #8 · uzulla/y8-2017-spring-talks~
https://github.com/uzulla/y8-2017-spring-talks/issues/8
--https://www.youtube.com/watch?v=omgHW1Rcl18&index=8&list=PLqyYlv12JxkTzXvHqCLk0LmlQXSYzKXIu
--https://onedrive.live.com/view.aspx?resid=B266A6B27EC808AC!260058&ithint=file%2cpptx&app=PowerPoint&authkey=!ALbzXlWLJJkbbwA
----
Tags: [[:.NET開発]], [[:.NET Core]], [[:.NET Standard]], [[:Hyper-V]], [[:仮想化]]