コンテナー化されたアプリのデバッグ
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タスク。- これらのタスクを呼び出す起動構成。
これらのアセットがまだ存在しない場合は、コンテナー: ワークスペースに 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 |
ウェブページが提供されるルートフォルダー。actionがdebugWithChromeに設定されている場合にのみ使用されます。 |
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 など)。 |
次のステップ
詳細については、以下を参照してください。