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

调试容器化应用

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

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

容器工具扩展目前支持在容器内调试Node.js、Python和.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 等)。

下一步

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