本站点文档内容均翻译自code.visualstudio.com,仅供个人学习,如有差异请以官网为准。

调试容器化应用

Container Tools 扩展为在容器内调试应用程序提供了更多的支持,例如脚手架launch.json在容器内附加调试器的配置。

容器工具扩展提供了一个Docker调试配置提供程序管理 VS Code 如何在运行的容器中启动应用程序和/或附加调试器到应用程序。此提供程序通过以下条目进行配置launch.json,配置特定于每个由提供商支持的应用程序平台。

容器工具扩展目前支持在容器内调试Node.jsPython.NET应用程序。

要求

脚手架或粘贴启动配置到launch.json 不是 足够的 来构建和调试一个容器。要成功运行容器启动配置,您必须拥有:

  • 一个Dockerfile。
  • Docker 构建docker运行任务在任务.json输入:.
  • 一个调用这些任务的启动配置。

我们建议使用容器:将Docker文件添加到工作区...命令来创建这些项目,如果这些资产不存在的话。如果你已经有一个功能正常的Dockerfile,我们建议使用容器:初始化用于容器调试命令来生成一个启动配置和与容器相关的任务。

Node.js

有关在容器内调试 Node.js 应用程序的更多信息,请参见 在容器内调试 Node.js.

示例launch.json调试Node.js应用程序的配置:

{
  "配置": [
    {
      "名称": "容器: Node.js 启动",
      "类型": "docker",
      "请求": "启动",
      "预启动任务": "docker-run: 调试",
      "平台": "node"
    }
  ]
}

Python

关于在容器内调试Python应用程序的更多信息,请参见 在容器内调试Python.

示例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"
      }
    }
  ]
}

配置参考

财产 描述
容器名称 用于调试的容器名称。
docker服务器就绪动作 启动浏览器到容器的选项。类似于serverReadyAction,但将容器端口替换为主机端口。
调试后移除容器 是否在调试后删除调试容器。
平台 应用程序的目标平台。可以是网核节点输入:.
网核 在容器中调试 .NET 项目的选项。
节点 在容器中调试 Node.js 项目的选项。
Python 在容器中调试Python项目的选项。

dockerServerReadyAction 对象属性

财产 描述
行动 当找到模式时应采取的行动。可以是使用Chrome调试打开外部输入:.
容器名称 匹配主机端口的容器名称。
图案 在调试控制台输出中查找的正则表达式模式。
uri格式 启动的URI格式。
网页根目录 网页服务于的根文件夹。仅在 时使用行动设置为使用Chrome调试输入:.

节点对象属性

这些属性与VS Code文档中描述的相同,用于附加调试器到Node.js应用程序。所有传递的属性在节点对象将传递给Node.js调试适配器,即使在下面没有明确列出。

财产 描述 默认
端口 可选。要使用的调试端口。 9229
地址 可选。调试端口的TCP/IP地址。
源映射 可选。通过将此设置为启用源映射输入:.
输出文件 可选。用于定位生成的JavaScript文件的全局模式数组。
自动附加子进程 可选。跟踪调试程序的所有子进程,并自动附加到以调试模式启动的那些子进程。
超时 可选。重新启动会话时,毫秒数后放弃。
停止进入 可选。程序启动时立即中断。
本地根目录 可选。VS Code 的根目录。 根工作区文件夹。
远程根目录 可选。节点在容器内的根目录。 /usr/src/app
智能步态 可选。尝试自动跳过不映射到源文件的代码。
跳过文件 可选。自动跳过符合这些 glob 模式的文件。
追踪 可选。启用诊断输出。

Python 对象属性

财产 描述 默认
主机 远程调试的主机。
端口 远程调试端口。 5678
路径映射 映射本地机器和远程主机之间的项目路径。
项目类型 你的Python项目的类型,烧瓶对于Flask项目,django对于Django,快速API对于 FastAPI,以及其他的一般情况。项目类型将用于设置端口和用于调试的命令。
只是我的代码 仅调试用户编写的代码。
django Django 调试。
Jinja Jinja 模板调试(如 Flask)。

netCore 对象属性

传递的属性网核 对象通常会传递给 .NET 调试适配器,即使在下面没有明确列出。调试器属性的完整列表在 OmniSharp VS Code 扩展文档中

财产 描述
应用程序项目 要调试的 .NET 项目 (.csproj, .fsproj 等)。

下一步

继续阅读以了解更多关于: