# 使用 Docker 运行 Node.js

> For the complete documentation index, see [llms.txt](https://www.jetbrains.com/zh-cn/help/idea/llms.txt).

> **TL;DR**
> 所需插件  :
>
>
>
> `JavaScript 和 TypeScript`  -  插件与 IntelliJ IDEA 捆绑在一起，并默认启用。
>
>
>
> `Node.js` ,  `Node.js Remote Interpreter` ,  `JavaScript Debugger` ,  `Docker`  -  在   设置 | 插件   页面安装插件。 插件仅在具有 Ultimate 订阅的 IntelliJ IDEA 中可用。

使用 Docker，您可以快速启动您的 Node.js 应用程序，以便从 IntelliJ IDEA 运行、调试和分析它。 IDE 将通过自动创建一个新的  `Dockerfile` 、构建并运行一个镜像、同步您的源代码，和在容器中安装  npm  依赖项来处理初始配置。

您可以在 [WebStorm 和 Docker 快速浏览](https://blog.jetbrains.com/webstorm/2017/04/quick-tour-of-webstorm-and-docker/) 中找到一些示例。

## 开始之前

Procedure:

1. 确保  JavaScript 和 TypeScript  以及  Docker  所需的插件已在   设置 | 插件   页面上启用。 有关更多信息，请参阅 [管理插件](managing-plugins.html)。

2. 安装  Node.js 、  Node.js 远程解释器  和  JavaScript 调试器  插件，在   设置 | 插件   页面上进行，如 [从 JetBrains Marketplace 安装插件](managing-plugins.html#install_plugin_from_repo) 中所述。 插件仅在具有 Ultimate 订阅的 IntelliJ IDEA 中可用。

3. 下载、安装并配置  Docker ，如 [Docker](docker.html) 中所述。

## 在 Docker 中配置 Node.js 运行时

Docker 中的 Node.js 运行时在   配置 Node.js 远程运行时   对话框中进行配置。 您可以从 [JavaScript 运行时](javascript-runtime.html) 页面中的   设置   对话框打开此对话框，或者在稍后当您为了在 Docker 中运行或调试您的应用程序而 [创建或编辑 Node.js 运行/调试配置](#ws_node_docker_create_run_debug_configuration) 时打开。

建议的方式是在   设置   对话框中配置远程 Node.js 运行时。 在这种情况下，您可以将该运行时及其关联的包管理器设置为项目默认。 因此，您不仅可以使用在 Docker 中配置的 Node.js 运行时运行和调试应用，还可以管理项目依赖项、运行测试并执行代码检查。 请参阅 [npm、pnpm 和 yarn 与 Docker](#ws_node_docker_manage_dependencies)、 [测试您的应用程序](#ws_node_docker_test_app)和 [使用 Docker 的 ESLint](#ws_node_docker_lint)下文。

直接在 Node.js 运行/调试配置中配置的远程 Node.js 运行时只能与该运行/调试配置一起使用。

Procedure: 创建远程 Node.js 运行时

1. 打开   设置   对话框（ `Ctrl+Alt+S` (Windows), `⌘ Comma` (macOS), `⌘ Comma` (IntelliJ IDEA Classic (macOS)), `⌘ Comma` (macOS System Shortcuts), `Ctrl+Alt+S` (XWin), `Ctrl+Alt+S` (GNOME), `Ctrl+Alt+S` (KDE), `Ctrl+Alt+S` (Emacs), `Ctrl+Alt+S` (Sublime Text), `⌘ Comma` (Sublime Text (macOS)), `Ctrl+Alt+S` (Visual Studio), `⌘ Comma` (Visual Studio (macOS)), `Ctrl+Alt+S` (NetBeans), `Ctrl+Alt+S` (Eclipse), `⌘ Comma` (Eclipse (macOS))），然后转到  `语言与框架 | JavaScript 运行时` 。

2. 点击 ![浏览按钮](https://resources.jetbrains.com/help/img/idea/2026.3/app.general.ellipsis.svg) 字段旁的   Node.js 运行时  。

![添加运行时 - 浏览按钮](https://resources.jetbrains.com/help/img/idea/2026.3/ws_node_interpreter_from_settings_browse_button.png)

3. 在包含所有当前已配置运行时列表的 [Node.js 运行时](node-js-interpreters.html) 对话框中，点击工具栏中的 !["添加"按钮](https://resources.jetbrains.com/help/img/idea/2026.3/app.expui.general.add.svg)，然后在上下文菜单中选择   添加远程   .

![在 Docker 容器中配置 Node.js 运行时：添加远程](https://resources.jetbrains.com/help/img/idea/2026.3/ws_node_interpreter_from_settings_docker_add_remote.png)

4. 在打开的 [配置 Node.js 远程运行时对话框](configure-node-js-remote-interpreter.html) 中，选择   Docker  。

5. 从   服务器   列表中，选择要使用的 Docker 配置。

![在 Docker 容器中配置 Node.js 运行时：选择 Docker 服务器](https://resources.jetbrains.com/help/img/idea/2026.3/ws_node_interpreter_from_settings_docker_select_server.png)

或者，点击字段旁边的   新建   按照 [启用 Docker 支持](docker.html#connect_to_docker) 中的描述配置 Docker 服务器。

6. 请从   镜像名称   列表中选择要使用的映像。

![在 Docker 容器中配置 Node.js 运行时：选择 Docker 镜像](https://resources.jetbrains.com/help/img/idea/2026.3/ws_node_interpreter_from_settings_docker_select_image.png)

Node.js 可执行文件会被自动检测并显示在   Node.js 运行时路径   字段。

7. 点击   OK   返回到   Node.js 运行时   对话框，其中已将新运行时添加到列表。

![远程运行时对话框： Docker 中的新 Node.js 运行时已添加到列表中](https://resources.jetbrains.com/help/img/idea/2026.3/ws_node_node_configure_interpreter_run_configuration_remote_interpreters_dialog_docker_node_added.png)

8. 要将新配置的运行时设置为项目默认，请在列表中选择它并点击   OK   以返回到   JavaScript 运行时   对话框。

![设置：已将新配置的远程 Node.js 运行时选为默认](https://resources.jetbrains.com/help/img/idea/2026.3/ws_node_interpreter_from_settings_docker_default_project_interpreter_and_package_manager_detected.png)

每次您从   Node.js 运行时  列表中选择  `项目` 别名时，IntelliJ IDEA都会自动使用此解释器，例如在创建运行/调试配置时。

若要使用与新运行时关联的包管理器来管理项目依赖项，请将该包管理器设为项目默认。 要做到这一点，请在   包管理器  字段中指定包管理器的位置。 详细了解请参阅 [指定项目的默认 Node.js 运行时和包管理器](#ws_node_docker_specify_default_project_interpreter_and_package_manager)。

### 指定项目的默认 Node.js 运行时和包管理器

每次从   Node.js 运行时   列表中选择  `项目`  别名时，IntelliJ IDEA 都会自动使用默认项目解释器，例如创建运行/调试配置时。

默认的项目包管理器会自动用于管理依赖项，例如，当您从  `<package manager> install`  文件运行  `package.json`  或安装第三方工具（例如 ESLint、Prettier 等）时。

Procedure:

1. 打开   设置   对话框（ `Ctrl+Alt+S` (Windows), `⌘ Comma` (macOS), `⌘ Comma` (IntelliJ IDEA Classic (macOS)), `⌘ Comma` (macOS System Shortcuts), `Ctrl+Alt+S` (XWin), `Ctrl+Alt+S` (GNOME), `Ctrl+Alt+S` (KDE), `Ctrl+Alt+S` (Emacs), `Ctrl+Alt+S` (Sublime Text), `⌘ Comma` (Sublime Text (macOS)), `Ctrl+Alt+S` (Visual Studio), `⌘ Comma` (Visual Studio (macOS)), `Ctrl+Alt+S` (NetBeans), `Ctrl+Alt+S` (Eclipse), `⌘ Comma` (Eclipse (macOS))），然后转到  `语言与框架 | JavaScript 运行时` 。

2. 从   Node.js 运行时   列表中选择要在当前项目中默认使用的配置。

3. 从   包管理器  列表中选择与要使用的软件包管理器相关联的别名。 IntelliJ IDEA 会自动检测其位置。

![设置：已将新配置的远程 Node.js 运行时选为默认](https://resources.jetbrains.com/help/img/idea/2026.3/ws_node_interpreter_from_settings_docker_default_project_interpreter_and_package_manager_detected.png)

或者，手动指定所需包管理器的位置。

* npm 可执行文件的默认位置是 `/usr/local/lib/node_modules/npm` 。

* 默认情况下，pnpm 的位置取决于安装方法： 1. 通过 `/usr/local/lib/node_modules/pnpm` 安装。 2. `/usr/local/pnpm-global/<version>/node_modules/pnpm` 用于通过 curl 安装（ `curl -f https://get.pnpm.io/<version>.js | node - add --global pnpm` ）。 进一步了解请访问 [pnpm official website](https://pnpm.io/installation)。

* yarn 的默认位置是 `/opt/yarn-<version>5` ，例如， `/opt/yarn-v1.22.5` 。

![在 Docker 容器中配置 Node.js 运行时：设置为默认项目解释器](https://resources.jetbrains.com/help/img/idea/2026.3/ws_node_interpreter_from_settings_docker_default_project_interpreter_and_package_manager.png)

### npm、pnpm 和 yarn 与 Docker

使用 IntelliJ IDEA，您可以管理项目依赖项并在 Docker 容器中运行脚本，就像处理本地项目一样。

Procedure:

1. 请确保您已配置 [Docker 中的远程 Node.js 运行时](#ws_node_docker_configure_interpreter)。

2. [指定项目的默认 Node.js 运行时和包管理器](#ws_node_docker_specify_default_project_interpreter_and_package_manager)

3. 管理您的项目依赖项。

* 打开您的 `package.json` 文件并像本地开发一样进行操作，例如，从上下文菜单中选择 运行 '<package manager> install' 。 依赖项使用 Docker 容器内的默认包管理器进行安装，并且 `node_modules` 文件夹会出现在您的项目中。

* 或者，打开命令行 shell 或嵌入的 终端 （ `Alt+F12` (Windows), `⌥ F12` (macOS), `⌥ F12` (IntelliJ IDEA Classic (macOS)), `⌘ ⌃ T` (macOS System Shortcuts), `Alt+F12` (XWin), `Alt+F12` (GNOME), `Alt+F12` (KDE), `Alt+F12` (Emacs), `Alt+F12` (Sublime Text), `⌥ F12` (Sublime Text (macOS)), `Ctrl+Alt+1` (Visual Studio), `⌘ ⌃ 1` (Visual Studio (macOS)), `Alt+F12` (NetBeans), `Alt+F12` (Eclipse), `⌥ F12` (Eclipse (macOS))），然后手动安装所需的软件包，例如，运行 `npm install --save-dev eslint` 。

从 [安装和更新包](installing-and-removing-external-software-using-node-package-manager.html#ws_installing_and_upgrading_packages) 和 [编辑 package.json](installing-and-removing-external-software-using-node-package-manager.html#ws_npm_yarn_edit_package_json) 了解更多。

4. [运行脚本](installing-and-removing-external-software-using-node-package-manager.html#ws_npm_running_npm_scripts)

## 创建 Node.js 运行配置

Procedure:

1. 前往  `运行 | 编辑配置` 。 在弹出的   编辑配置   对话框中，点击工具栏上的 ![添加新配置按钮](https://resources.jetbrains.com/help/img/idea/2026.3/调试配置：Node.js](run-debug-configuration-node-js.html)对话框打开。

2. 在   文件   字段中，指定启动应用程序的主文件路径（例如，  `bin/www`  对于 [Express](http://expressjs.com/) 应用程序）。

![Node.js 运行/调试配置：指定的 JavaScript 文件](https://resources.jetbrains.com/help/img/idea/2026.3/ws_node_docker_configure_interpreter_run_configuration.png)

3. 如有必要，请按照 [运行和调试 Node.js 应用程序](running-and-debugging-node-js.html#ws_node_run_config_optionally)中描述的方式指定一些可选设置。

4. 在   Node.js 运行时   列表中，选择 Docker 环境中的相应远程 Node.js 运行时。

![使用 Docker 运行/调试 Node.js：选择解释器](https://resources.jetbrains.com/help/img/idea/2026.3/ws_node_docker_run_configuration_select_interpreter.png)

或者，点击位于   Node.js 运行时   字段旁边的 ![浏览按钮](https://resources.jetbrains.com/help/img/idea/2026.3/app.general.ellipsis.svg)，并按照 [如上所述](#ws_node_docker_configure_remote_interpreter_preferences_remote_interpreters_dialog) 配置远程 Node.js 运行时。

![在 Docker 中的 Node.js：运行/调试配置，配置运行时，选择 添加远程](https://resources.jetbrains.com/help/img/idea/2026.3/ws_node_docker_run_configuration_add_remote.png)

5. 检查自动生成的 Docker 容器设置。 点击 ![展开图标](https://resources.jetbrains.com/help/img/idea/2026.3/app-client.expui.inline.expand.svg)，在弹出窗口中打开设置。

![结合 Docker 使用 Node.js：运行/调试配置、Docker 容器设置](https://resources.jetbrains.com/help/img/idea/2026.3/ws_node_docker_run_configuration_docker_container_settings.png)

6. 可选 ：配置端口绑定 [如下所述](#ws_node_docker_create_run_debug_configuration_bind_ports_steps)。

Procedure: 配置端口绑定（可选）

基本上，需要将应用程序运行所在的端口与容器的端口绑定。

在 [Docker 容器设置](#ws_node_debug_docker_container_settings) 字段旁，点击 ![浏览图标](https://resources.jetbrains.com/help/img/idea/2026.3/app-client.expui.inline.browse.svg)，并在打开的   编辑 Docker 容器设置   对话框中指定设置。

1.

展开   端口绑定   区域，然后在工具栏中点击 !["添加"按钮](https://resources.jetbrains.com/help/img/idea/2026.3/app.expui.general.add.svg)。 在打开的   端口绑定   对话框中，按如下方式映射端口：

2.

点击   修改选项  ，然后选择您要指定的选项：

![配置 Docker 容器设置：选择要指定的端口绑定选项](https://resources.jetbrains.com/help/img/idea/2026.3/ws_node_docker_run_configuration_port_bindings_select_options.png)

3.

* 在 容器端口 字段中，输入您的应用程序中指定的端口。

* 在 主机端口 字段中，输入一个任意端口，您希望通过该端口从您的计算机访问该应用程序。

* 在 主机 IP 字段中，输入 Docker 主机的 IP 地址。 如果您使用 `本地主机` ，请输入 `127.0.0.1` 。 ![Docker：已指定端口绑定](https://resources.jetbrains.com/help/img/idea/2026.3/ws_node_docker_run_configuration_port_bindings.png)

* 点击 OK 返回到 编辑 Docker 容器设置 对话框，其中新的端口绑定会添加到列表中。

![Docker：已添加端口绑定](https://resources.jetbrains.com/help/img/idea/2026.3/调试配置：Node.js](run-debug-configuration-node-js.html) 对话框，端口绑定会添加到   Docker 容器设置   字段。

![Docker：已添加端口绑定](https://resources.jetbrains.com/help/img/idea/2026.3/node_docker_run_configuration_port_bindings_added.png)

## 运行您的应用程序

![在 Docker 容器中运行 Node.js 应用程序](https://resources.jetbrains.com/help/img/idea/2026.3/ws_node_docker_run_app.animated.gif)

Procedure:

1. 创建一个   Node.js  运行/调试配置 [如上所述](#ws_node_docker_create_run_debug_configuration)。

2. 从   选择运行/调试配置   工具栏的列表中，选择 [新创建的 Node.js 配置](#ws_node_docker_create_run_debug_configuration)。

3. 点击 ![运行按钮](https://resources.jetbrains.com/help/img/idea/2026.3/app.actions.execute.svg)到   选择运行/调试配置  列表。

### 检查应用程序输出

为了确保应用程序按预期工作，您可以从 IntelliJ IDEA [内置 HTTP 客户端](http-client-in-product-code-editor.html) 运行一个 HTTP 请求。

![使用 Docker 的 Node.js：通过 HTTP请求 连接到正在运行的应用程序](https://resources.jetbrains.com/help/img/idea/2026.3/ws_node_docker_run_http_request.animated.gif)

Procedure:

1. 创建一个 HTTP 请求 文件。

2. 请编写以下请求：

```HTTP_REQUEST
GET http://<host IP>:<container port>/
                    
```

例如：

```HTTP_REQUEST
GET http://127.0.0.1:3010/
                    
```

3. 点击 ![运行 HTTP 请求按钮](https://resources.jetbrains.com/help/img/idea/2026.3/app-client.expui.run.run.svg) 在边栏中，并点击 ![运行 HTTP 请求按钮](https://resources.jetbrains.com/help/img/idea/2026.3/app-client.expui.run.run.svg) 在   运行 http://<host IP>:<container port>/   旁边。

![发起一个 HTTP 请求](https://resources.jetbrains.com/help/img/idea/2026.3/ws_node_docker_run_http_request_launch.png)

应用程序输出显示在   运行  工具窗口的单独选项卡中。

![应用程序输出显示在 Run 工具窗口中](https://resources.jetbrains.com/help/img/idea/2026.3/ws_node_docker_run_http_request_output.png)

## 调试您的应用程序

![在 Docker 容器中调试 Node.js 应用程序](https://resources.jetbrains.com/help/img/idea/2026.3/ws_node_docker_debug_app.animated.gif)

Procedure:

1. 根据需要在 Node.js 代码中设置 [断点](using-breakpoints.html)。

2. 创建一个   Node.js   配置 [，如上所述](#ws_node_docker_create_run_debug_configuration)，在工具栏的   选择运行/调试配置   列表中选择该配置，然后点击列表旁边的 ![调试按钮](https://resources.jetbrains.com/help/img/idea/2026.3/app.expui.run.debug.svg)。

3. 按 [在本地随 Node.js 应用程序一起启动调试器](running-and-debugging-node-js.html#debugLocal)时的方式继续。

## 测试您的应用程序

借助 IntelliJ IDEA，您可以在 Docker 容器内运行 [Mocha](http://mochajs.org/) 和 [Jest](https://jestjs.io/) 测试，与在本地运行的方式完全相同。 如需更多信息，请参阅 [Mocha](running-unit-tests-on-mocha.html)和 [Jest](running-unit-tests-on-jest.html)。

Procedure:

1. 请确保已配置相关的 Docker 中的远程 Node.js 运行时，并将其设置为您的项目默认。 另外，请确保与该远程运行时关联的包管理器已设为项目默认。 如需更多信息，请参阅 [在 Docker 中配置 Node.js 运行时](#ws_node_docker_configure_interpreter) 和 [npm、pnpm 和 yarn 与 Docker](#ws_node_docker_manage_dependencies)。

2. 打开  `package.json` ，并确保所需的测试框架列在  `devDependencies`  部分中：

```JSON
{
  "name": "node-express",
  "version": "0.0.0",
  "private": true,
  "dependencies": {
    "cookie-parser": "~1.4.4",
    "debug": "~2.6.9",
    "express": "~4.16.1",
    "http-errors": "~1.6.3",
    "morgan": "~1.9.1",
    "pug": "^3.0.2"
  },
  "devDependencies": {
    "chai": "^4.3.4",
    "concurrently": "^6.3.0",
    "eslint": "^8.1.0",
    "http-server": "^14.0.0",
    "jest": "^27.3.1",
    "mocha": "^9.1.3",
    "nyc": "^15.1.0"
  }
}
                
```

3. 在编辑器中的任意位置右键点击，然后从上下文菜单中选择   运行 '<package manager> install'  。

4. 请根据 [Mocha 官方网站](https://mochajs.org/) 或 [Jest 官方网站](https://jestjs.io/docs/getting-started) 的说明创建测试。

5. 将存储单元测试的文件夹标记为测试源文件夹，参见 [内容根](content-roots.html)。

6. 直接从编辑器运行和调试单个测试，或者创建运行/调试配置以启动部分或全部测试，如 [运行 Mocha 测试](running-unit-tests-on-mocha.html#ws_mocha_running)、 [调试 Mocha 测试](running-unit-tests-on-mocha.html#ws_mocha_debugging)、 [运行 Jest 测试](running-unit-tests-on-jest.html#ws_jest_running_tests) 和 [调试 Jest 测试](running-unit-tests-on-jest.html#ws_jest_debugging_tests) 中所述。

## 使用 Docker 的 ESLint

使用 IntelliJ IDEA，您可以在 Docker 容器中对代码运行 [ESLint](https://eslint.org/)，就像在本地一样。 如需更多信息，请参阅 [JavaScript linter](linters.html) 和 [ESLint](eslint.html)。

Procedure:

1. 请确保已配置相关的 Docker 中的远程 Node.js 运行时，并将其设置为您的项目默认。 另外，请确保与该远程运行时关联的包管理器已设为项目默认。 如需更多信息，请参阅 [在 Docker 中配置 Node.js 运行时](#ws_node_docker_configure_interpreter) 和 [npm、pnpm 和 yarn 与 Docker](#ws_node_docker_manage_dependencies)。

2. 打开您的  `package.json` ，并确保在  `devDependencies`  部分列出了 ESLint：

```JSON
{
  "name": "node-express",
  "version": "0.0.0",
  "private": true,
  "dependencies": {
    "cookie-parser": "~1.4.4",
    "debug": "~2.6.9",
    "express": "~4.16.1",
    "http-errors": "~1.6.3",
    "morgan": "~1.9.1",
    "pug": "^3.0.2"
  },
  "devDependencies": {
    "eslint": "^8.1.0"
  }
}
                
```

3. 在编辑器中的任意位置右键点击，然后从上下文菜单中选择   运行 '<package manager> install'  。

4. 之后，ESLint 的工作方式与您在本地处理代码时相同。 直接在编辑器或   问题   工具窗口中查看检测到的问题的说明，并应用建议的快速修复。 如需更多信息，请参阅 [JavaScript linter](linters.html) 和 [ESLint](eslint.html)。

![在 Docker 容器中使用 ESLint](https://resources.jetbrains.com/help/img/idea/2026.3/ws_node_docker_eslint.png)

