I try to start simple nodejs server inside Docker container and debug it with chrome://inspect or WebStorm. Debugging port 9229 is binded but inspection not works. On the other hand when I run same code without docker i can inspect it in chrome://inspect and in WebStorm both well.
Can anybody explain me why Chrome can't inspect nodejs code in Docker container???
Dockerfile
FROM node:8.2.1-alpine
WORKDIR /code
COPY package.json /code/package.json
RUN npm install && npm ls
RUN mv /code/node_modules /node_modules
COPY . /code
EXPOSE 8000
EXPOSE 9229
CMD ["npm", "run", "start"]
alexey@home:~/app$ docker run -p 9229:9229 -p 8000:8000 node-dev
npm info it worked if it ends with ok
npm info using [email protected]
npm info using [email protected]
npm info lifecycle @~prestart: @
npm info lifecycle @~start: @
> @ start /code
> node --inspect app
Debugger listening on ws://127.0.0.1:9229/5b225f7d-0e18-4ded-894b-a7993bb7da64
For help see https://nodejs.org/en/docs/inspector
HTTP server listening on port 8000
0.0.0.0. It's currently listening on127.0.0.1which is only reachable from within the container (not your host). - johnharris85ifconfiginside your container, you'll see multiple interfaces. Docker's will likely start with172.xxxxx. You could bind to that (and it would work fine) but that's not practical as we don't know for the most part what it's going to be ahead of time, so binding on0.0.0.0solves the problem.127.0.0.1is the loopback for the container only. - johnharris85