无法将调试器附加到Docker Node 8.9.x

时间:2017-11-17 11:52:58

标签: node.js debugging docker

我们使用VSCode或Chrome DevTools(chrome:// inspect)在Docker容器(6.12.0)上运行和调试NodeJS应用程序,没有任何问题。

将调试器附加到NodeJS容器,基于新的LTS version 8.9.x停止工作(调试器附加超时)。 VSCode和Chrome DevTools附件的行为都相同。

在Windows 10和MacOS(High Siera),最新的Docker安装上都可以重现相同的行为。

Dockerfile看起来像这样

FROM node:8.9.1-slim
ENV PORT=8080

RUN mkdir /usr/src/app
WORKDIR /usr/src/app
COPY ./ /usr/src/app

RUN npm i

CMD ["node", "--inspect", "bin/www"]

用于运行容器的命令(公开调试9229和Web服务器8080端口)

docker run --rm -p 9229:9229 -p 8080:8080 --name docker_debug docker_debug

演示应用程序是使用express-generator工具启动的简单NodeJS快速应用程序。

VSCode启动配置以附加正在运行的Docker应用程序,如下所示

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Docker: Attach to Node",
      "type": "node",
      "request": "attach",
      "port": 9229,
      "address": "localhost",
      "localRoot": "${workspaceFolder}",
      "remoteRoot": "/usr/src/app",
      "protocol": "inspector"
    }
  ]
}

如上所述,将基本映像切换到以前的Node LTS版本6.12.0时,调试器附加工作没有任何问题。

FROM node:6.10.0-slim

我测试了8.9.0-slim,8.9.1,8.9.1-slim和8.9.1-alpine基本图像,结果相同。

1 个答案:

答案 0 :(得分:0)

好的,此问题的解决方案与Node v7.5.0有关,只需将0.0.0.0添加到--inspect参数,就像这样

CMD ["node", "--inspect:0.0.0.0", "bin/www"]

有关详细信息,请查看此docker-node GitHub Issue