コンテナ化されたアプリのデバッグ
Container Tools 拡張機能は、コンテナ内で実行されているアプリケーションにデバッガーをアタッチするための launch.json 構成の足場(スキャフォールディング)を作成するなど、コンテナ内でのアプリケーションのデバッグを強力にサポートします。
Container Tools 拡張機能は、VS Code がどのようにアプリケーションを起動し、実行中のコンテナ内のアプリケーションにデバッガーをアタッチするかを管理する docker デバッグ構成プロバイダーを提供します。このプロバイダーは launch.json 内のエントリを介して構成され、構成内容はプロバイダーがサポートする各アプリケーションプラットフォーム固有のものとなります。
Container Tools 拡張機能は現在、コンテナ内での Node.js、Python、および .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 ページが提供されるルートフォルダー。action が debugWithChrome に設定されている場合にのみ使用されます。 |
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 など)。 |
次のステップ
詳細については、以下をお読みください。