Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why Chrome can't inspect nodejs code in Docker container?

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
like image 326
alexey2baranov Avatar asked Feb 18 '18 18:02

alexey2baranov


2 Answers

in your package.json scripts:

"debug": "nodemon --inspect=0.0.0.0:9229 index.js",

in your docker-compose.yaml:

services:
  service_name:
    command: npm run debug
    ports:
      - 9229:9229

I am not 100% sure on this but I think that mapping the debugger to run on 0.0.0.0 exposes it to your local network meaning that anyone can connect to your machine IP on port 9229 will be able to debug your nodejs server. Beware your nodejs server has access to the filesystem. So do not run production (or development) servers with this ever.

like image 108
Hoffmann Avatar answered Oct 21 '22 19:10

Hoffmann


You need node --inspect 0.0.0.0:8000 in container. Container port 8000 is mapped to host port 9229. So you must use localhost:9229 to connect chrome-dev-tools to node-debugger in container.

Details https://nodejs.org/en/docs/guides/debugging-getting-started/

like image 21
Gerd Avatar answered Oct 21 '22 21:10

Gerd