跳到主要内容
版本:Latest

使用 VS Code Docker 扩展来调试容器应用程序

VS Code Docker 扩展能让你轻松在 VS Code 中构建、管理、调试和部署容器化应用程序。

调试容器化应用程序的步骤

  1. 安装并启动 Rancher Desktop。从 Kubernetes Settings 菜单中,将 Container Runtime 选为 dockerd (moby)

  1. 安装并启动 Visual Studio Code 或 Visual Studio Code Insiders。本教程使用 Visual Studio Code:

  1. 在扩展市场中安装 Docker 扩展。

  1. 你可以使用此 Github 仓库 (https://github.com/bwateratmsft/samples) 中提供的示例。克隆此仓库并在 VS Code 会话中打开 expressapp 文件夹。

  2. 打开命令面板(Ctrl+Shift+P、F1 或 Cmd+Shift+P)并运行 “Add Docker Files to Workspace”。由于这是一个 Express 应用程序,因此选择 Node.js 作为应用程序平台,选择 3000(或任何其他可用端口)作为 port。由于这是一个简单的示例,请在 Include optional Docker Compose files 选择 No。此步骤添加了调试应用程序所需的 DockerfileLaunch Configuration

  1. 在代码中插入断点:

  1. 在顶部的 Debug 窗口中,将活动调试配置切换为 Docker Node.js Launch。按 F5Debug 模式启动应用程序容器。示例应用程序的登录页面将在你的浏览器中打开,而且代码会在断点处停止执行。你可以在这里调试应用程序,就像应用程序运行在你的主机上一样。

  1. 有时候,由于调试进程可能尚未启动,因此应用程序可能不会在第一次运行时在设置的断点处中断。在这种情况下,你可以刷新浏览器来再次触发执行,从而命中断点。你还可以通过在 task.json 文件中设置 inspectMode: 'break' 属性来避免此行为,从而防止应用程序在连接调试器之前运行。

  2. 在某些主机上,防火墙设置可能会阻止调试进程在主机和容器进程之间建立连接。在这种情况下,你可以添加防火墙规则,以允许运行容器的 VM 与运行 VS Code 会话的主机进行通信。在 Windows 上,你可以通过在特权 powershell 中运行以下命令来添加防火墙规则:

New-NetFirewallRule -Action Allow -Description 'Allow communication from WSL containers' -Direction Inbound -Enabled True -InterfaceAlias 'vEthernet (WSL)' -Name 'WSL Inbound' -DisplayName 'WSL Inbound'