调试容器化应用
容器工具扩展为容器内的应用程序调试提供了更多支持,例如脚手架launch.json用于将调试器附加到容器内运行的应用程序的配置。
容器工具扩展提供了Docker调试配置提供者,管理 VS Code 如何启动应用程序和/或将调试器附加到运行容器中的应用程序。该提供者通过以下条目配置launch.json配置针对提供者支持的每个应用平台进行特定配置。
Container Tools 扩展目前支持在容器内调试 Node.js、Python 和 .NET 应用程序。
要求
将发射配置搭建或粘贴到launch.json但不足以构建和调试容器。要成功运行容器启动配置,您必须具备:
- 一个Dockerfile。
docker-build以及docker-run任务tasks.json.- 一个启动配置,调用这些任务。
如果这些资源还不存在,我们建议使用容器:将Docker 文件添加到工作区......命令来创建这些项目。如果你已经有一个功能正常的 Dockerfile,我们建议使用 Containers: Initialize for container debugg 命令来构建启动配置和容器相关任务。
Node.js
关于在容器中调试Node.js应用程序的更多信息,请参阅“容器中的调试”Node.js。
示例launch.json调试Node.js应用程序的配置:
{
"configurations": [
{
"name": "Containers: Node.js Launch",
"type": "docker",
"request": "launch",
"preLaunchTask": "docker-run: debug",
"platform": "node"
}
]
}
Python
关于在容器中调试 Python 应用的更多信息,请参见“Debug Python in a container”。
示例launch.json调试 Python 应用程序的配置:
{
"configurations": [
{
"name": "Containers: Python - Django",
"type": "docker",
"request": "launch",
"preLaunchTask": "docker-run: debug",
"python": {
"pathMappings": [
{
"localRoot": "${workspaceFolder}",
"remoteRoot": "/app"
}
],
"projectType": "django"
}
}
]
}
.NET
你可以选择两种方式来构建和调试你的项目:
-
使用.NET SDK:如果你熟悉
MSBuild或者想在没有 Dockerfile 的情况下容器化你的项目,这是推荐的选择。注意:该选项仅适用于 .NET SDK 7 及以上版本,并使用
dotnet 发布命令来构建映像。 -
使用 Dockerfile:如果你更喜欢用
Dockerfile选择此选项。
关于这两个选项的更多细节,请参阅容器中的调试 .NET。
示例launch.json用于调试 .NET 应用程序的配置Dockerfile:
{
"version": "0.2.0",
"configurations": [
{
"name": "Containers: .NET Launch",
"type": "docker",
"request": "launch",
"preLaunchTask": "Run Container",
"netCore": {
"appProject": "${workspaceFolder}/project.csproj"
}
}
]
}
配置参考
| 财产 | 描述 |
|---|---|
容器名称 |
用于调试的容器名称。 |
dockerServerReadyAction |
启动浏览器到容器的选项。类似于 serverReadyAction,但用主机端口替代了容器端口。 |
removeContainerAfterDebug |
调试后是否应该移除调试容器。 |
平台 |
应用的目标平台。可以是网核或节点. |
网核 |
在容器中调试 .NET 项目的选项。 |
节点 |
在容器中调试Node.js项目的选项。 |
派森 |
在容器中调试 Python 项目的选项。 |
dockerServerReadyAction object properties
| 财产 | 描述 |
|---|---|
行动 |
当发现模式时应采取的行动。可以是debugWithChrome或openExternally. |
容器名称 |
集装箱名称与主机端口相匹配。 |
图案 |
调试控制台输出中需要关注的正则表达式模式。 |
uri格式 |
URI格式将启动。 |
web根 |
网页从根文件夹提供。仅在行动设置为debugWithChrome. |
节点对象属性
这些属性与 VS Code 文档中描述的用于将调试器附加到Node.js应用程序时相同。所有通过的性质
节点对象会传递给Node.js调试适配器,即使下面没有具体列出。
| 财产 | 描述 | 默认 |
|---|---|---|
港口 |
可选。调试端口。 | 9229 |
地址 |
可选。调试端口的TCP/IP地址。 | |
资料来源地图 |
可选。通过将此设置为启用源映射确实如此. |
|
outFiles |
可选。用于定位生成JavaScript文件的glob图案数组。 | |
autoAttachChildProcesses |
可选。跟踪调试程序的所有子进程,并自动关联到在调试模式下启动的子进程。 | |
暂停 |
可选。重启会话时,在这毫秒数后放弃。 | |
停止进入 |
可选。程序启动时立即断开。 | |
localRoot(本地根) |
可选。VS Code 的根目录。 | 根工作区文件夹。 |
远程根 |
可选。Node 在容器内的根目录。 | /usr/src/app |
smartStep |
可选。试着自动跨越那些不映射到源文件的代码。 | |
skip文件 |
可选。自动跳过被这些团块图案覆盖的文件。 | |
追踪 |
可选。启用诊断输出。 |
Python 对象属性
| 财产 | 描述 | 默认 |
|---|---|---|
主持人 |
远程调试的主机。 | |
港口 |
远程调试的移植版。 | 5678 |
路径地图 |
绘制本地机器与远程主机之间的项目路径。 | |
项目类型 |
你的Python项目类型,烧瓶对于Flask项目,姜戈对于Django,FastAPI适用于FastAPI,以及其他通用版本。项目类型将用于设置端口和调试所需的命令。 |
|
justMyCode |
只调试用户编写的代码。 | |
姜戈 |
Django 调试。 | 错误 |
金子 |
Jinja 模板调试(例如 Flask)。 | 错误 |
netCore 对象属性
通过的财产
网核对象通常传递给 .NET 调试适配器,即使下面没有具体列出。调试器属性的完整列表见 OmniSharp VS Code 扩展文档。
| 财产 | 描述 |
|---|---|
app项目 |
.NET 项目(.csproj、.fsproj 等)用于调试。 |
下一步
继续阅读,了解更多: