コンテナ化されたアプリのデバッグ

Container Tools 拡張機能は、コンテナ内で実行されているアプリケーションにデバッガーをアタッチするための launch.json 構成の足場(スキャフォールディング)を作成するなど、コンテナ内でのアプリケーションのデバッグを強力にサポートします。

Container Tools 拡張機能は、VS Code がどのようにアプリケーションを起動し、実行中のコンテナ内のアプリケーションにデバッガーをアタッチするかを管理する docker デバッグ構成プロバイダーを提供します。このプロバイダーは launch.json 内のエントリを介して構成され、構成内容はプロバイダーがサポートする各アプリケーションプラットフォーム固有のものとなります。

Container Tools 拡張機能は現在、コンテナ内での Node.jsPython、および .NET アプリケーションのデバッグをサポートしています。

要件

launch.json にデバッグ構成の足場を作成したり貼り付けたりするだけでは、コンテナをビルドおよびデバッグするために不十分です。コンテナの起動構成を正常に実行するには、以下が必要です。

  • Dockerfile。
  • tasks.json 内の docker-build および docker-run タスク。
  • これらのタスクを呼び出すデバッグ構成。

これらのアセットがまだ存在しない場合は、Containers: Add Docker Files to Workspace... コマンドを使用してこれらの項目を作成することを推奨します。すでに機能する Dockerfile がある場合は、Containers: Initialize for container debugging コマンドを使用して、デバッグ構成とコンテナ関連タスクの足場を作成することを推奨します。

Node.js

コンテナ内での Node.js アプリケーションのデバッグに関する詳細情報は、コンテナ内での Node.js のデバッグを参照してください。

Node.js アプリケーションをデバッグするための launch.json 構成例

{
  "configurations": [
    {
      "name": "Containers: Node.js Launch",
      "type": "docker",
      "request": "launch",
      "preLaunchTask": "docker-run: debug",
      "platform": "node"
    }
  ]
}

Python

コンテナ内での Python アプリケーションのデバッグに関する詳細情報は、コンテナ内での Python のデバッグを参照してください。

Python アプリケーションをデバッグするための launch.json 構成例

{
  "configurations": [
    {
      "name": "Containers: Python - Django",
      "type": "docker",
      "request": "launch",
      "preLaunchTask": "docker-run: debug",
      "python": {
        "pathMappings": [
          {
            "localRoot": "${workspaceFolder}",
            "remoteRoot": "/app"
          }
        ],
        "projectType": "django"
      }
    }
  ]
}

.NET

コンテナ内でプロジェクトをビルドおよびデバッグする方法は、以下の2つから選択できます。

  • .NET SDK を使用する場合: MSBuild に慣れている、または Dockerfile なしでプロジェクトをコンテナ化したい場合に推奨される選択肢です。

    : このオプションは .NET SDK 7 以上でのみ使用可能で、dotnet publish コマンドを使用してイメージをビルドします。

  • Dockerfile を使用する場合: Dockerfile を使ってプロジェクトをカスタマイズすることを好む場合は、このオプションを選択してください。

これら2つのオプションの詳細については、コンテナ内での .NET のデバッグを参照してください。

Dockerfile を使用して .NET アプリケーションをデバッグするための launch.json 構成例

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Containers: .NET Launch",
      "type": "docker",
      "request": "launch",
      "preLaunchTask": "Run Container",
      "netCore": {
        "appProject": "${workspaceFolder}/project.csproj"
      }
    }
  ]
}

構成リファレンス

プロパティ 説明
containerName デバッグに使用するコンテナの名前。
dockerServerReadyAction コンテナに対してブラウザを起動するためのオプション。serverReadyAction に似ていますが、コンテナポートをホストポートに置き換えます。
removeContainerAfterDebug デバッグ後にデバッグ用コンテナを削除するかどうか。
platform アプリケーションのターゲットプラットフォーム。netCore または node が指定可能です。
netCore コンテナ内で .NET プロジェクトをデバッグするためのオプション。
node コンテナ内で Node.js プロジェクトをデバッグするためのオプション。
python コンテナ内で Python プロジェクトをデバッグするためのオプション。

dockerServerReadyAction オブジェクトのプロパティ

プロパティ 説明
action パターンが見つかったときに実行するアクション。debugWithChrome または openExternally が指定可能です。
containerName ホストポートと一致させるコンテナ名。
pattern デバッグコンソールの出力で検索する正規表現パターン。
uriFormat 起動する URI 形式。
webRoot Web ページが提供されるルートフォルダー。actiondebugWithChrome に設定されている場合にのみ使用されます。

node オブジェクトのプロパティ

これらのプロパティは、Node.js アプリケーションにデバッガーをアタッチするための VS Code ドキュメントで説明されているものと同じです。node オブジェクトで渡されたすべてのプロパティは、以下に明示的に記載されていない場合でも、Node.js デバッグアダプターに渡されます。

プロパティ 説明 既定値
port オプション。使用するデバッグポート。 9229
address オプション。デバッグポートの TCP/IP アドレス。
sourceMaps オプション。これを true に設定してソースマップを有効にします。
outFiles オプション。生成された JavaScript ファイルを検索するための glob パターンの配列。
autoAttachChildProcesses オプション。デバッグ対象のすべてのサブプロセスを追跡し、デバッグモードで起動されたプロセスに自動的にアタッチします。
timeout オプション。セッションを再起動するときに、このミリ秒数後に中止します。
stopOnEntry オプション。プログラムの起動時に即座に中断します。
localRoot オプション。VS Code のルートディレクトリ。 ルートワークスペースフォルダー。
remoteRoot オプション。コンテナ内の Node のルートディレクトリ。 /usr/src/app
smartStep オプション。ソースファイルにマップされないコードを自動的にスキップしようとします。
skipFiles オプション。これらの glob パターンでカバーされるファイルを自動的にスキップします。
trace オプション。診断出力を有効にします。

python オブジェクトのプロパティ

プロパティ 説明 既定値
host リモートデバッグ用のホスト。
port リモートデバッグ用のポート。 5678
pathMappings ローカルマシンとリモートホスト間のプロジェクトパスをマップします。
projectType Python プロジェクトのタイプ。Flask プロジェクトの場合は flask、Django の場合は django、FastAPI の場合は fastapi、その他は general です。プロジェクトタイプは、デバッグに使用するポートとコマンドの設定に使用されます。
justMyCode ユーザーが作成したコードのみをデバッグします。
django Django デバッグ。 false
jinja Jinja テンプレートのデバッグ(Flask など)。 false

netCore オブジェクトのプロパティ

netCore オブジェクトで渡されたプロパティは、以下に明示的に記載されていない場合でも、通常は .NET デバッグアダプターに渡されます。デバッガープロパティの完全なリストは、OmniSharp VS Code 拡張機能のドキュメントに記載されています。

プロパティ 説明
appProject デバッグする .NET プロジェクト(.csproj, .fsproj など)。

次のステップ

詳細については、以下をお読みください。

© . This site is unofficial and not affiliated with Microsoft.