现已推出!阅读 10 月份的新功能和修复。

容器中的 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: 将 Docker 文件添加到工作区... 命令

    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 启动 调试器配置。

    Selected Docker debug configuration

  3. 开始调试(使用 F5 键)。

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

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

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

查看应用程序日志

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

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

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

    Screenshot of logs in the terminal

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

后续步骤

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