コンテナー内で .NET をデバッグする
前提条件
-
.NET SDK をインストールします。これには、.NET デバッガーへのアタッチのサポートが含まれています。 .NET SDK 7 以降では、Dockerfile なしでデバッグするオプションがあります。
-
Visual Studio Code C# 拡張機能 をインストールします。これには、VS Code で .NET デバッガーにアタッチするためのサポートが含まれています。
-
macOS ユーザーのみ: Docker の環境設定で
/usr/local/share/dotnet/sdk/NuGetFallbackFolder
を共有フォルダーとして追加します。
チュートリアル
- 必要に応じて、
dotnet new
で .NET プロジェクトを作成します。 - VS Code でプロジェクトフォルダーを開きます。
- オプションで、ブレークポイントを設定します。
.NET SDK と Dockerfile ビルド
コンテナー内でアプリをビルドおよびデバッグするには、Dockerfile を使用する方法と、.NET 7 以降の場合は Dockerfile を使用しない方法の 2 つがあります。
.NET SDK コンテナービルド (Dockerfile
なしでデバッグ)
このオプションは、Web プロジェクトでサポートされており、Docker が Linux コンテナーを使用するように設定されている場合に使用できます。
- F5 キーを押すか、[実行] メニューから [デバッグの開始] を選択します。(
launch.json
に既存の起動プロファイルがある場合は、⌘/ (Windows、Linux Ctrl+/) でコメントアウトできます) - デバッガーのリストが表示されます。 [Docker: コンテナーでデバッグ] を選択します。
Dockerfile
でビルドする ([Dockerfile を使用]) か、.NET SDK を使用してビルドする ([.NET SDK を使用]) かのオプションが表示されたら、[.NET SDK を使用] を選択します。- ワークスペースに複数のプロジェクトファイルがある場合は、デバッグするプロジェクトに関連付けられているプロジェクトファイルを選択します。 ビルドが成功すると、.NET アプリが Docker コンテナーで実行され、Web アプリがブラウザーで開きます。
注: サポートされている .NET SDK バージョン: この機能は、デフォルトで .NET SDK バージョン 7.0.300 以降で使用できます。 バージョン 7.0.100 ~ 7.0.300 の場合は、
dotnet add package Microsoft.NET.Build.Containers
で有効にします。 .NET SDK コンテナービルドの詳細については、Microsoft Learn を参照してください。
Dockerfile
でデバッグする
-
デバッグに必要なアセットを追加するかどうかを尋ねる通知が表示されるまで待ちます。 [はい] を選択します。
-
コマンドパレットを開き (⇧⌘P (Windows、Linux Ctrl+Shift+P))、[Docker: Docker ファイルをワークスペースに追加...] と入力します。 アプリを既に Docker 化している場合は、代わりに [Docker: Docker デバッグ用に初期化] を実行できます。 プロンプトに従います。
-
[実行とデバッグ] ビューに切り替えます (⇧⌘D (Windows、Linux Ctrl+Shift+D))。
-
[Docker .NET Core Launch] 起動構成を選択します。
-
デバッグを開始します。(F5)
SSL サポートによる実行とデバッグ
SSL (HTTPS プロトコルを使用) を有効にするには、構成にいくつかの変更を加える必要があります。
-
Dockerfile で、HTTPS / SSL 用の個別のポートを定義するために、ベースセクションに
EXPOSE
行を追加します。 HTTP リクエスト用に別のポートで別のEXPOSE
行を保持します。FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base WORKDIR /app EXPOSE 5000 EXPOSE 5001
-
.vscode/tasks.json
ファイルで、netCore
セクションにconfigureSsl: true
を追加します。 また、docker-run: debug
タスクのdockerRun
セクションに、Dockerfile で定義したのと同じポート番号で環境変数ASPNETCORE_URLS
を追加します。dockerRun: { "env": { "ASPNETCORE_URLS": "https://+:5001;http://+:5000" } } netCore: { "appProject": "${workspacefolder}/MyProject.csproj", "enableDebugging": true, "configureSsl": true }
追加のカスタマイズオプションについては、タスク および コンテナー化されたアプリのデバッグ に関するドキュメントを参照してください。
.NET SDK コンテナービルドのプロジェクトファイル設定の保存
複数の .NET プロジェクトファイルを含むワークスペースフォルダーがあり、特定のプロジェクトのみを排他的にデバッグする場合 ( F5 を押すたびにプロジェクトファイルのリストから選択するように求められないようにする場合)、次の手順に従って起動プロファイルを保存できます。
-
.NET SDK コンテナービルド の手順に従い、デバッグセッションをライブ状態に保ちます。
-
デバッガービューの
歯車
アイコンをクリックします。 -
[Docker: コンテナーでデバッグ] を選択します。
-
デバッグするプロジェクトに関連付けられているプロジェクトファイルを選択します。
プロジェクトの設定が保存され、 F5 を押してもプロジェクトファイルを選択する必要がなくなります。