VS Codeのエージェントモードを拡張するには、を試してください!

コンテナー化されたアプリをデバッグする

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 ファイルを検索するためのグロブパターン配列。
autoAttachChildProcesses オプション。デバッグ対象のすべての子プロセスを追跡し、デバッグモードで起動されたものに自動的にアタッチします。
timeout オプション。セッションを再起動する際、このミリ秒数を超えたらあきらめます。
stopOnEntry オプション。プログラム起動時にすぐに中断します。
localRoot オプション。VS Code のルートディレクトリ。 ルートワークスペースフォルダー。
remoteRoot オプション。コンテナー内の Node のルートディレクトリ。 /usr/src/app
smartStep オプション。ソースファイルにマッピングされないコードを自動的にステップオーバーしようとします。
skipFiles オプション。これらのグロブパターンでカバーされるファイルを自動的にスキップします。
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 など)。

次のステップ

詳細については、以下を参照してください。