我们使用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基本图像,结果相同。
答案 0 :(得分:0)
好的,此问题的解决方案与Node v7.5.0有关,只需将0.0.0.0
添加到--inspect
参数,就像这样
CMD ["node", "--inspect:0.0.0.0", "bin/www"]
有关详细信息,请查看此docker-node GitHub Issue