🚀 VS Codeでで入手しましょう!

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

Docker拡張機能は、Dockerコンテナー内のアプリケーションのデバッグをより強力にサポートします。例えば、コンテナー内で実行中のアプリケーションにデバッガーをアタッチするためのlaunch.json構成の作成などが可能です。

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

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

必要条件

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

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

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

Node.js

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

Node.jsアプリケーションのデバッグ用のlaunch.json構成の例

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

Python

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

Pythonアプリケーションのデバッグ用のlaunch.json構成の例

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

.NET

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

  • .NET SDKを使用: MSBuildに慣れている場合、またはDockerfileなしでプロジェクトをコンテナー化したい場合は、こちらをお勧めします。

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

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

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

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

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

構成リファレンス

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

次のステップ

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