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

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

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

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

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

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

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

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

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

  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

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

  1. 在代码中插入断点:

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

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

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

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

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

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

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