We run and debug NodeJS apps at Docker containers (6.12.0) using VSCode or Chrome DevTools (chrome://inspect) without any problems.
Attaching debugger to NodeJS containers based on new LTS version 8.9.x stoped to work (debugger attach timeouts). Both VSCode and Chrome DevTools attach behave the same.
Same behavior is reproducible on both Windows 10 an MacOS (High Siera), latest Docker installation.
Dockerfile looks like this
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"]
Command used to run container (exposing debugging 9229 and web server 8080 ports)
docker run --rm -p 9229:9229 -p 8080:8080 --name docker_debug docker_debug
Demo app is simple NodeJS express app bootstraped using express-generator tool.
VSCode Launch configuration to attach running Docker app looks like this
{
"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"
}
]
}
As mentioned, debugger attach works without any problems when switching base image to former Node LTS version 6.12.0.
FROM node:6.10.0-slim
I have tested 8.9.0, 8.9.1, slim and alpine base images with same result.
Is this reproducible with just Node.js v8.9.1 without docker?
@chorrell No, it is only docker / debug in docker container issue.
It works for me if the CMD is --inspect=0.0.0.0 instead of just inspect. Not really sure why
Yes, I confirm, that @SimenB 's solution works for me too. Thank you.
Even though this is solution to the issue, it is different behaviour to the v6.12.0 and it would be nice to know why is it so.
Probably related to https://github.com/nodejs/node/issues/11591#issuecomment-283110138
Closing, as I don't think this is actionable for us. Feel free to keep discussing, though 馃檪
@SimenB This is a pretty time consuming gotcha that I haven't found documented anywhere other than this issue.
Is there any reason why we can't at least put something about this in the README.md?
PR most welcome! :)
Most helpful comment
It works for me if the
CMDis--inspect=0.0.0.0instead of justinspect. Not really sure why