🚀 在 VS Code 中获取

容器中的 Node.js

在本指南中,您将学习如何

  • Express Node.js 服务容器创建 Dockerfile 文件
  • 构建、运行和验证服务的功能
  • 调试在容器中运行的服务

先决条件

  • 必须安装 Docker 和 VS Code Docker 扩展,如概述中所述
  • Node.js 版本 10 或更高版本

创建一个 Express Node.js 应用程序

  1. 为项目创建一个文件夹。

  2. 在项目文件夹中打开开发命令提示符并创建项目

    npx express-generator
    npm install
    

向项目添加 Docker 文件

  1. 在 VS Code 中打开项目文件夹。

  2. 打开命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P)) 并使用 Docker: Add Docker Files to Workspace... 命令

    Add Dockerfile to a Node.js project

  3. 当提示输入应用程序平台时,选择 Node.js

  4. 选择默认的 package.json 文件。

  5. 当提示输入应用程序端口时,输入 3000

  6. 当提示是否包含 Docker Compose 文件时,选择 。Compose 通常在一次运行多个容器时使用。

该扩展程序创建 Dockerfile.dockerignore 文件。如果您选择包含 Docker Compose 文件,则还将生成 docker-compose.ymldocker-compose.debug.yml。最后,该扩展程序将在 .vscode/tasks.json 中创建一组用于构建和运行容器的 VS Code 任务(在调试和发布配置中),并在 .vscode/launch.json 中创建一个 启动调试配置,用于调试容器内的服务。

向镜像添加环境变量

Docker 扩展程序通过使用 IntelliSense 提供自动完成和上下文帮助来帮助您编写 Dockerfile。要查看此功能的实际效果,请按照以下步骤向您的服务镜像添加环境变量

  1. 打开 Dockerfile 文件。

  2. 使用 ENV 指令向服务容器镜像添加环境变量。

    Add an environment variable to Docker image

    请注意 Docker 扩展程序如何列出所有可用的 Dockerfile 指令并描述语法。

    Docker 扩展程序使用 Dockerfilebase 阶段来为您的服务创建容器镜像的调试版本。将环境变量定义放在 base 阶段,以使此变量在容器镜像的调试版本和发布版本中都可用。

  3. 保存 Dockerfile 文件。

在本地运行服务

  1. 打开终端 (⌃` (Windows, Linux Ctrl+`))。

  2. 输入 npm run start 以启动应用程序

    > [email protected] start /Users/user/code/scratch/express-app
    > node ./bin/www
    
  3. 打开 Web 浏览器并导航到 https://127.0.0.1:3000。您应该看到类似于以下的页面

    Application page in browser

  4. 完成测试后,在终端中键入 Ctrl+C

构建服务镜像

  1. 打开命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P)) 并选择 Docker 镜像: 构建镜像... 命令。

  2. 打开 Docker 资源管理器并验证新镜像在镜像树中是否可见

    Verify Docker image exists

运行服务容器

  1. 右键单击上一节中构建的镜像,然后选择 运行交互式运行。容器应启动,您应该能够在 Docker 容器树中看到它

    Running service container

  2. 打开 Web 浏览器并导航到 https://127.0.0.1:3000。您应该看到类似于以下的页面

    Application page in browser

  3. 完成测试后,右键单击容器树中的容器,然后选择 停止

在服务容器中调试

当 Docker 扩展程序向应用程序添加文件时,它还在 .vscode/launch.json 中添加 VS Code 调试器配置,用于在容器内运行时调试服务。该扩展程序检测服务使用的协议和端口,并将浏览器指向该服务。

  1. routes/index.js'/' 路由的 get() 处理程序中设置断点。

  2. 确保已选择 Docker Node.js Launch 调试器配置。

    Selected Docker debug configuration

  3. 启动调试(使用 F5 键)。

    • 服务 Docker 镜像正在构建。
    • 服务 Docker 容器正在运行。
    • 浏览器打开到映射到服务容器的(随机)端口。
    • 调试器在 index.js 中的断点处停止。

    请注意,由于调试器在应用程序启动附加,因此第一次可能会错过断点;您可能需要刷新浏览器才能在第二次尝试时看到调试器中断。

    您可以通过在 tasks.jsondocker-run: debug 任务下的 node 对象中将 inspectMode 属性设置为 break 来配置应用程序以等待调试器在开始执行之前附加。

查看应用程序日志

您可以使用容器上的 查看日志 命令在 VS Code 中查看日志

  1. 导航到 Docker 资源管理器。

  2. 容器 选项卡中,右键单击您的容器并选择 查看日志

    Screenshot of logs in the terminal

  3. 输出将显示在终端中。

后续步骤

您已完成!现在您的容器已准备就绪,您可能想要