に参加して、VS Code の AI 支援開発について学びましょう。

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

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タスク。
  • これらのタスクを呼び出す起動構成。

これらのアセットがまだ存在しない場合は、コンテナー: ワークスペースに Docker ファイルを追加... コマンドを使用してこれらを作成することをお勧めします。機能する Dockerfile がすでにある場合は、コンテナー: コンテナーデバッグ用に初期化 コマンドを使用して、起動構成とコンテナー関連のタスクの足場を組むことをお勧めします。

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 ウェブページが提供されるルートフォルダー。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 など)。

次のステップ

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

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