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

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

Container Tools 拡張機能は、コンテナー内で実行中のアプリケーションにデバッガーをアタッチするための launch.json 構成のスキャフォールディングなど、コンテナー内のアプリケーションのデバッグに対するさらなるサポートを提供します。

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

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

要件

launch.json に起動構成をスキャフォールディングまたは貼り付けるだけでは、コンテナーをビルドしてデバッグするには不十分です。コンテナーの起動構成を正常に実行するには、以下が必要です。

  • Dockerfile。
  • tasks.json 内の docker-builddocker-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 など)。

次のステップ

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