コンテナー化されたアプリのデバッグ
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 など)。 |
次のステップ
詳細については、以下を参照してください。