调试容器化应用程序
Docker 扩展为 Docker 容器内的应用程序调试提供了更多支持,例如launch.json
用于将调试器附加到容器内运行的应用程序的脚手架配置。
Docker 扩展提供了一个docker
调试配置提供程序,用于管理 VS Code 如何启动应用程序和/或将调试器附加到正在运行的 Docker 容器中的应用程序。该提供程序通过 中的条目进行配置launch.json
,配置特定于提供程序支持的每个应用程序平台。
Docker 扩展当前支持在 Docker 容器中调试Node.js、Python和.NET应用程序。
要求
搭建或粘贴启动配置launch.json
不足以构建和调试Docker 容器。要成功运行 Docker 启动配置,您必须具有:
- 一个 Dockerfile。
docker-build
和docker-run
任务tasks.json
。- 调用这些任务的启动配置。
如果这些资产都不存在,我们建议使用Docker:将 Docker 文件添加到工作区...命令来创建这些项目。如果您已经有一个可用的 Dockerfile,我们建议使用Docker:初始化 Docker 调试命令来构建启动配置和 Docker 相关任务。
Node.js
有关在 Docker 容器内调试 Node.js 应用程序的更多信息,请参阅在容器内调试 Node.js。
launch.json
用于调试 Node.js 应用程序的示例配置:
{
"configurations": [
{
"name": "Docker Node.js Launch",
"type": "docker",
"request": "launch",
"preLaunchTask": "docker-run: debug",
"platform": "node"
}
]
}
Python
有关在 Docker 容器中调试 Python 应用程序的更多信息,请参阅在容器内调试 Python。
launch.json
用于调试 Python 应用程序的示例配置:
{
"configurations": [
{
"name": "Docker: Python - Django",
"type": "docker",
"request": "launch",
"preLaunchTask": "docker-run: debug",
"python": {
"pathMappings": [
{
"localRoot": "${workspaceFolder}",
"remoteRoot": "/app"
}
],
"projectType": "django"
}
}
]
}
。网
您可以选择两种在 Docker 容器中构建和调试项目的方法:
-
使用 .NET SDK:如果您熟悉
MSBuild
或想要在没有 Dockerfile 的情况下容器化您的项目,这是推荐的选择。注意:此选项仅适用于 .NET SDK 7 及更高版本,并使用
dotnet publish
命令来构建映像。 -
使用 Dockerfile:如果您更喜欢使用 Dockerfile 自定义项目
Dockerfile
,请选择此选项。
有关这两个选项的更多详细信息,请参阅在 Docker 容器中调试 .NET。
launch.json
使用以下命令调试 .NET 应用程序的示例配置Dockerfile
:
{
"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 |
提供网页的根文件夹。action 仅当设置为时使用debugWithChrome 。 |
节点对象属性
这些属性与VS Code 文档中描述的用于将调试器附加到 Node.js 应用程序的属性相同。即使下面没有具体列出,对象中传递的所有属性都
node
将传递到 Node.js 调试适配器。
财产 | 描述 | 默认 |
---|---|---|
port |
选修的。要使用的调试端口。 | 9229 |
address |
选修的。调试端口的 TCP/IP 地址。 | |
sourceMaps |
选修的。通过将其设置为 来启用源映射true 。 |
|
outFiles |
选修的。用于定位生成的 JavaScript 文件的 glob 模式数组。 | |
autoAttachChildProcesses |
选修的。跟踪调试对象的所有子进程并自动附加到在调试模式下启动的子进程。 | |
timeout |
选修的。重新启动会话时,请在此毫秒数后放弃。 | |
stopOnEntry |
选修的。程序启动时立即中断。 | |
localRoot |
选修的。VS Code 的根目录。 | 根工作区文件夹。 |
remoteRoot |
选修的。Docker 容器内 Node 的根目录。 | /usr/src/app |
smartStep |
选修的。尝试自动跳过未映射到源文件的代码。 | |
skipFiles |
选修的。自动跳过这些 glob 模式覆盖的文件。 | |
trace |
选修的。启用诊断输出。 |
python 对象属性
财产 | 描述 | 默认 |
---|---|---|
host |
用于远程调试的主机。 | |
port |
用于远程调试的端口。 | 5678 |
pathMappings |
映射本地计算机和远程主机之间的项目路径。 | |
projectType |
Python 项目的类型,flask 对于 Flask 项目、django Django、fastapi FastAPI 以及其他项目的常规类型。项目类型将用于设置用于调试的端口和命令。 |
|
justMyCode |
仅调试用户编写的代码。 | |
django |
Django 调试。 | false |
jinja |
Jinja模板调试(例如Flask)。 | false |
netCore 对象属性
即使下面没有特别列出,对象中传递的属性
netCore
通常也会传递到 .NET 调试适配器。调试器属性的完整列表位于OmniSharp VS Code 扩展文档中。
财产 | 描述 |
---|---|
appProject |
要调试的 .NET 项目(.csproj、.fsproj 等)。 |
下一步
继续阅读以了解更多信息: