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

目次

概要

前提環境

インストール

手順1

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

プロジェクトの作成

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

プロジェクトの設定

手順2

インストレーション

手順3
手順4
手順5

デバッグ実行の準備

手順6
手順7
手順8
手順9
手順10
手順11

※ 後々、「from microsoft/aspnetcore」でググって、
  コンパイル済みのASP.NET Coreアプリケーションを実行するための
  公式のDocker Imageをダウンロードしていたことが解った。
  https://hub.docker.com/r/microsoft/aspnetcore/

手順13
手順15

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

設定の確認

デバッグ実行

手順16

余談:PDBのタイプ

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

手順2

※ 平たく言って、Open棟梁テンプレートをDockerで動かす。

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

手順18
手順19

SQL Serverへの接続

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

接続文字列

Windows ファイアウォール

SQL Server 構成マネージャー

Expressの場合は、SQL Server 構成マネージャーの設定も必要にある。

参考

変更点のスクショ

以下は、ASP.NET Core MVCのOpen棟梁テンプレートの変更点のスクショです。
(設定ファイル読み込み方法に「埋め込まれたリソース」を採用した場合)

手順20

手順3

概要

オーケストレーション

Docker Composeを使用して、コンテナ・オーケストレーションを行う。

構成

初期設定

手順1と同じ。

コンテナの管理

複数のコンテナを扱うので、そろそろ管理コマンド・ツールを理解する。

dockerコマンド

Kitematicのインストール

Update-Package

Update-Packageを実行する。

Kestrelのポートを固定する。

Program.csに以下の行を追加する。

public static IWebHost BuildWebHost(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .UseStartup<Startup>()
        .UseUrls("http://0.0.0.0:5000/") // ← ココを追加 localhost や 127.0.0.1 だとダメ。
        .Build();

Dockerファイルの編集

Dockerファイル(Dockerfile)の編集

ASP.NET Coreコンテナ

既定のDockerファイル(Dockerfile)を修正

nginxコンテナ

nginxフォルダにDockerfileファイル(Dockerfile)を作成する。
※ nginxフォルダは、Docker Composeファイル(docker-compose.yml)と同じ階層に作成。

FROM nginx:latest
COPY default.conf /etc/nginx/conf.d/default.conf

nginx設定ファイルの追加

nginxフォルダにdefault.confを作成する。
※ nginxフォルダは、Docker Composeファイル(docker-compose.yml)と同じ階層に作成。

既定値

server {
    listen        80;
    server_name   example.com *.example.com;
    location / {
        proxy_pass         http://localhost:5000;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection keep-alive;
        proxy_set_header   Host $http_host;
        proxy_cache_bypass $http_upgrade;
    }
}

変更後

server {
    listen        80;
    server_name   localhost;
    location / {
        proxy_pass         http://xxx.xxx.xxx.xxx:5000;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection keep-alive;
        proxy_set_header   Host $http_host;
        proxy_cache_bypass $http_upgrade;
    }
}

※ xxx.xxx.xxx.xxxには、

Docker Composeファイルの編集

Docker Composeファイル(docker-compose.yml)の編集

既定値

version: '3'
services:
  webapplication1:
    image: webapplication1
    build:
      context: .
      dockerfile: /WebApplication1/Dockerfile

変更後

version: '3'
services:
  nginx-proxy:
    image: nginx-proxy
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports:
      - "8888:80"
    links:
      - webapplication1
  webapplication1:
    image: webapplication1
    build:
      context: ./WebApplication1
      dockerfile: Dockerfile
    ports:
      - "5000:5000"

補足

Dockerファイル

Dockerファイル(Dockerfile)には様々な設定が可能。

Docker Composeファイル

手順4

概要

手順3

コンテナを追加してみる。

永続化

がある。

を採用する。

構成図

構成図

初期設定

手順3と同じ。

Redis

構築

接続確認

WSLから、redis-cliをインストールして確認する。

分散キャッシュの実装

コッチのほうが新しい。

テスト

PostgreSQL

構築

接続確認

WSLから、postgresql-clientをインストールして確認する。

データ・アクセスの実装

テスト

手順5

VS2019で素のプロジェクト・テンプレートを
生成してDocker Composeをやってみた。
手順4までは、VS2017で実行している)

検証

結果

VS2019 では、「コンテナー オーケストレーター」が追加されている。

手順6

生成されるファイルの分析

こちらは、Visual Studio 2019で生成されたファイルを分析

Dockerファイル

Dockerファイルとは?

コチラ

生成されたDockerファイル

コチラ

Docker Composeファイル

Docker Composeとは?

コチラ

生成されたDocker Composeファイル

単体使いを研究する。

Dockerファイル単体使い

Docker Compose単体使い

続き

Visual Studio Kubernetes Tools

Visual Studio Code Docker extension

サンプル

github.com

MVC_Sample

https://github.com/daisukenishino2/EvaluateAspNetCoreOnDocker/tree/master/MVC_Sample

WebApplication1

https://github.com/daisukenishino2/EvaluateAspNetCoreOnDocker/tree/master/WebApplication1

git clone後にDocker Composeで動かす方法。

スタートアップ・プロジェクトに指定

「docker-compose」をスタートアップ・プロジェクトに指定する。

手順1

「Docker Compose」をデバッグ実行

次いで、デバッグで、「Docker Compose」を指定して、実行する。

手順1

参考

Microsoft Docs

きよくらの備忘録

ONE-RUN

銀の光と碧い空

データストア・コンテナ関連

コチラに移動。

OSSコンソーシアム

Wiki

Blog


Tags: :.NET開発, :.NET Core, :Hyper-V, :仮想化, :コンテナ, :IaC


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS