マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

手順

以下の手順で検証・評価した。

環境

  • Win 10 Pro
  • Hyper-Vの有効化
  • VS 2017 Community
  • .NET Core 2.0

プロジェクトの作成

ASP.NET Core MVCアプリケーションの作成

  • Dockerサポートなし
  • 認証なし

プロジェクトの設定

  • プロジェクトを作成した後にプロジェクトを右クリックしてDockerサポートを追加
手順1
  • Hyper-V コンテナ上で動作するOS(Windows or Linux)を選択(ここではLinuxを選択)。
手順2

インストレーション

  • Docker for Windowsのインストール(ダウンロードに少々時間がかかる)
手順3
  • Docker for Windowsのインストール・ウィザード
    Docker ≒ Linuxコンテナなので下のCheck Boxは外しておく)
手順4
手順5

デバッグ実行の準備

  • デバッグのドロップダウン・リストからDockerを選択した状態でデバッグ実行しようとすると、以下のエラー・メッセージが表示されるが、
    Docker CE for Windows(Docker Community Edition for Windows)はインストール済みであるので、PCの再起動を行ってみる。
手順6
  • 再起動後、Hyper-V上にLinux VMを確認できる(MobyLinuxVM)。
手順7
  • 再度デバッグ実行を行うと、以下のエラー・メッセージが表示される。
手順8
  • エラー・メッセージが以下のように変更される(Dockerが実行されていないとのこと)。
手順9
  • 暫く経つと、以下のダイアログが表示された。
    OKを押下して再起動する(再起動に少々時間がかかる)。
手順10
  • 再起動を行うと、以下のダイアログボックスが表示されている(ログインはしなくてもいい)。
手順11
  • この時点で、以下のdockerコマンドをcmdから実行すると、
    dockerコマンドが適切に実行され結果が返り、Docker(のクライアント)が実行されていることを確認する。
    > docker version
    > docker run hello-world
  • デバッグ実行を開始すると、以下のcmdが起動し「何か」がダウンロードされ、
手順12
  • 次いで、以下のエラー・メッセージが表示されるので、
手順13
  • メッセージ通り、Docker for Windowsの設定で、ボリューム共有を有効にする。
    Docker for Windowsの画面はタスクトレイ (Task tray) から起動する。
    管理者アカウントのCredentialの入力を求められるので入力を行う。
手順14
  • 設定完了後、再度デバッグ実行を行うと、以下のダイアログが表示されるので、
    [アクセスを許可する]ボタンを押下し、VPNKitと言う組込みVPNツールのリスニング・ポートを開放する。
手順15
  • これにより、アプリケーションがHyper-V コンテナ内のDocker(Linuxコンテナ)で起動し、デバッグが開始される。

ブレークポイントを設定してデバッグ実行する。

  • ブレークポイントを設定して実行すると、
    以下のように、適切にデバッグ実行されていることを確認できる。
手順16
  • 本当にLinux上で動いているか心配なので、念のため、以下で確認する。
手順17

より実践的な開発環境を構成する。

  • Docker側は、
    • Webサーバ:Kestrelで動作する。
    • DB:ホスト側のDBで動作させたい。
  • 後者のDBへのアクセスが可能かどうかDBMSアプリケーションを使用して確認する。
    (DBMSアプリケーションとしては、ASP.NET Core対応されたOpen棟梁テンプレートを使用する。)

設定ファイル読み込み方法の変更

  • 早速エラーが発生。DBアクセス以前に設定ファイルへのアクセスができない。
手順18
  • 以下のように調査すると、プロジェクト内のファイルがカレント・ディレクトリ(/app)にデプロイされることが解る。
手順19
  • 従って、
  • プロジェクト内にファイルを配置し、
    (「リンクとして追加」の設定はNG、「出力ディレクトリにコピー」の設定は不要)
    これを読み取る方向性で対応するか、
  • 旧Azure PaaS時と同様に、埋め込まれたリソースで対応できる。
    設定の仕方は、以下の「Azure Web Apps」で動作させる方法が参考になる。

SQL Serverへの接続

ホスト側のDBで動作させようとしたが、ハマりどころが多かったのでメモ。

  • 接続文字列
    • ホストのIPアドレスは、10.0.75.1になる。
    • Windows認証ではなく、SQL Server認証の接続文字列を使用する。
  • Windows ファイアウォール
    • 必要時応じて設定する。
    • OFFにして通ったら絞るのがイイ。
  • SQL Server 構成マネージャー
    Expressの場合は、SQL Server 構成マネージャーの設定も必要にある。

変更点のスクショ

以下は、ASP.NET Core MVCのOpen棟梁テンプレートの変更点のスクショです。

手順20

余談

PDBのタイプ

Docker側でライブラリのデバッグをする場合、ライブラリのPDBが、
「完全(full)」ではなくて、「ポータブル(portable)」である必要がある。

参考

Microsoft Docs

きよくらの備忘録

銀の光と碧い空


Tags: :.NET開発, :.NET Core, :Hyper-V, :仮想化


添付ファイル: file20.png 3件 [詳細] file19.png 4件 [詳細] file18.png 5件 [詳細] file17.png 10件 [詳細] file16.png 4件 [詳細] file15.png 5件 [詳細] file14.png 5件 [詳細] file10.png 7件 [詳細] file13.png 5件 [詳細] file12.png 6件 [詳細] file11.png 5件 [詳細] file9.png 6件 [詳細] file8.png 7件 [詳細] file7.png 6件 [詳細] file6.png 5件 [詳細] file5.png 7件 [詳細] file4.png 5件 [詳細] file3.png 4件 [詳細] file2.png 5件 [詳細] file1.png 6件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-05-14 (月) 19:59:23 (8d)