Windows10+Visual Studio2017でWindowsコンテナアプリ(asp.net)を実行してみる


事前準備

  1. Visual Studio 2017をインストール

    • https://visualstudio.microsoft.com/ja/free-developer-offers/
    • 今回は、お試し利用の為、無償のVisual Studio Communityを利用する。
    • インストーラにて、インストールする対象は以下の2つを選択。
      • ASP.NET と Web 開発
      • .NET Core クロスプラットフォームの開発
        インストールは、そこそこかかります。(20~30分程度) 私のPCが低スペックなだけ・・・。
  2. Docker for Windowsをインストール

    • https://docs.docker.com/docker-for-windows/install/
    • Download from Docker Storeを選択して、ダウンロードを行う。
    • ダウンロードには、Docker Hubアカウントが必要となります。別途作成しておく必要あり。

      インストールは、そこそこかかります。(5分程度)
    • 念のため、一度Dockerを起動して、dockerコマンドを試しておく。[docker version] docker が起動していない場合、docker server のバージョンが確認できないので、 を起動してサーバを起動する。

Visual Studio 2017でWindowsコンテナアプリ(asp.net)を開発。~チュートリアル程度~

  1. 新しいプロジェクトを作成する。

    1. [Visual C# - Web - ASP.NET Webアプリケーション] を選択する。
    2. [Webアプリケーション]を選択し[Dockerサポートを有効にする]をチェック。
  2. サンプルソースが既に出力されているので確認。

    • ソリューションエクスプローラでは、Dockerfileと、ASP.NETのソースが出力されている事が確認できる。
    • Dockerfileの中身( dotnetコマンドを利用して、ビルドを行っている。)
#Depending on the operating system of the host machines(s) that will build or run the containers, the image specified in the FROM statement may need to be changed.
#For more information, please see https://aka.ms/containercompat

FROM microsoft/dotnet:2.1-aspnetcore-runtime-nanoserver-1803 AS base
WORKDIR /app
EXPOSE 52763
EXPOSE 44372

FROM microsoft/dotnet:2.1-sdk-nanoserver-1803 AS build
WORKDIR /src
COPY ["WebApplication1/WebApplication1.csproj", "WebApplication1/"]
RUN dotnet restore "WebApplication1/WebApplication1.csproj"
COPY . .
WORKDIR "/src/WebApplication1"
RUN dotnet build "WebApplication1.csproj" -c Release -o /app

FROM build AS publish
RUN dotnet publish "WebApplication1.csproj" -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "WebApplication1.dll"]

. サンプルプロジェクトを利用して、Windowsコンテナを実行する。
- ツールバー - Dockerにて実行。


- 出力ウィンドウにDocker buildの実行ログが出力される。
- Docker buildが終わったら、Debugウィンドウに切り替わり、ブラウザが起動される。


- Windows PowerShellから、Dockerにビルドされている状態を確認できる。

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

PS C:\Users\yamas> docker images
REPOSITORY          TAG                                      IMAGE ID            CREATED             SIZE
webapplication1     dev                                      e942d5d8d889        56 seconds ago      493MB
microsoft/dotnet    2.1-aspnetcore-runtime-nanoserver-1803   861e30929ebc        4 days ago          493MB
PS C:\Users\yamas> docker ps
CONTAINER ID        IMAGE                 COMMAND                    CREATED             STATUS              PORTS                                                                 NAMES
9cb9ccfa664c        webapplication1:dev   "C:\\remote_debugger\\…"   5 minutes ago       Up 4 minutes        44372/tcp, 52763/tcp, 0.0.0.0:52763->80/tcp, 0.0.0.0:44372->443/tcp   dazzling_engelbart
PS C:\Users\yamas>

その他

  • 他にもAzuleを利用すると、DevOpsを実行できる。
  • Docker Registryを利用して、DockerImageも管理したい。