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

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

将debugging器附加到基于新的LTS版本8.9.x的NodeJS容器停止工作(debugging器附加超时)。 VSCode和Chrome DevTools的附加行为都是一样的。

同样的行为在Windows 10和MacOS(高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"] 

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

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

演示应用程序是简单的NodeJS快速应用程序使用快速生成器工具bootstraped。

VSCode启动configuration附加正在运行的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版本时,debugging器附加工作没有任何问题。

 FROM node:6.10.0-slim 

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

好的,这个问题的解决方法与Node v7.5.0相关,只需要像这样在--inspect参数中加上0.0.0.0即可

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

有关更多信息,请查看此docker-node GitHub问题