Visual Studio for Mac での Docker の概要

重要

Visual Studio for Mac は、Microsoft の モダン ライフサイクル ポリシーに従って、2024 年 8 月 31 日に廃止される予定です。 引き続き Visual Studio for Mac を使用できますが、VS Code 用の新しい C# 開発キット拡張機能のプレビュー バージョンなど、Mac 上の開発者向けの他のいくつかのオプションがあります。

サポートタイムラインと代替方法の詳細をご確認ください

Visual Studio for Mac では、コンテナー化された ASP.NET Core アプリを簡単にビルド、デバッグ、実行し、それを Azure に発行することができます。

必須コンポーネント

インストールとセットアップ

Docker のインストールについては、「Install Docker Desktop for Mac (Docker Desktop for Mac をインストールする)」の情報を確認し、それに従ってください。

ASP.NET Core Web アプリケーションを作成し、Docker のサポートを追加する

  1. [ファイル] > [新しいソリューション] に移動して、新しいソリューションを作成します。
  2. [.NET Core] > [アプリ] で、 [Web アプリケーション] テンプレートを選択します。Create a new ASP.NET application
  3. ターゲット フレームワークを選択します。 この例では、.NET Core 2.2 を使います。Set target framework
  4. 名前 (この例では DockerDemo) など、プロジェクトの詳細を入力します。 作成されるプロジェクトには、ASP.NET Core の Web サイトをビルドして実行するために必要なすべての基本が含まれています。
  5. [ソリューション] ウィンドウで DockerDemo プロジェクトを右クリックし、 [追加] > [Docker サポートの追加] を選択します。Add docker support

Visual Studio for Mac で、docker-compose という名前の新しいプロジェクトがソリューションに自動的に追加され、既存のプロジェクトに Dockerfile が追加されます。

Generated docker support files

Dockerfile の概要

Dockerfile は、Docker の最終イメージを作成するためのレシピです。 その中に含まれるコマンドの詳細については、「Dockerfile reference」 (Dockerfile リファレンス) を参照してください。

FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-stretch-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch AS build
WORKDIR /src
COPY DockerDemo/DockerDemo.csproj DockerDemo/
RUN dotnet restore "DockerDemo/DockerDemo.csproj"
COPY . .
WORKDIR "/src/DockerDemo"
RUN dotnet build "DockerDemo.csproj" -c Release -o /app/build

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

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

前の Dockerfile は、microsoft/aspnetcore イメージに基づいており、プロジェクトをビルドしてコンテナーに追加することで基本イメージを変更するための手順が含まれています。

Note

Visual Studio for Mac によって作成される既定の Dockerfile では、HTTP トラフィック用にポート 80 が公開されます。 HTTPS のトラフィックを有効にするには、Expose 443 を Dockerfile に追加します。

デバッグ

docker-compose プロジェクトをスタートアップ プロジェクトとして選択し、デバッグを始めます ([実行] > [デバッグの開始])。 コンテナー内の ASP.NET プロジェクトがビルド、配置、起動されます。

ヒント

Docker Desktop をインストールした後の初回実行時には、デバッグしようとすると、次のエラーが表示される可能性があります。Cannot start service dockerdemo: Mounts denied

Docker Desktop で [File Sharing](ファイル共有) タブに /usr/local/share/dotnet/sdk/NuGetFallbackFolder を追加します。

Adding the NuGetFallbackFolder folder to File Sharing

ビルドが完了すると、アプリケーションが Safari で起動されます。

Default Docker project running in Safari

コンテナーがポートでリッスンしていることに注意してください。たとえば http://localhost:32768 などで、ポートはこれと異なる場合があります。

実行中のコンテナーの一覧を表示するには、ターミナルで docker ps コマンドを使います。

下のスクリーンショットで、ポートのリレーに注意してください ( [PORTS] の下)。 これは、コンテナーは上の Safari で見たポートでリッスンしており、ポート 80 (Dockerfile で定義されているもの) で内部 Web サーバーに要求を中継していることを示します。 アプリケーションの観点からは、ポート 80 でリッスンしています。

Docker container list