コンテナー化されたアプリのデバッグ
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ページが提供されるルートフォルダー。 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 |
オプション。 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など)。 |
次のステップ
詳細については、以下をお読みください。