コンテナー化されたアプリをデバッグする
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 ファイルを検索するためのグロブパターン配列。 | |
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 など)。 |
次のステップ
詳細については、以下を参照してください。