Я пытаюсь запустить простой сервер nodejs внутри контейнера Docker и отлаживать его с помощью chrome://inspect или WebStorm. Порт отладки 9229 привязан, но проверка не работает. С другой стороны, когда я запускаю тот же код без докера, я могу проверить его как в chrome://inspect, так и в WebStorm.
Может ли кто-нибудь объяснить мне, почему Chrome не может проверять код nodejs в контейнере Docker???
Файл Docker
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
. В настоящее время он прослушивает127.0.0.1
, который доступен только из контейнера (а не с вашего хоста). - person johnharris85   schedule 18.02.2018ifconfig
внутри своего контейнера, вы увидите несколько интерфейсов. Docker, скорее всего, начнется с172.xxxxx
. Вы можете выполнить привязку к этому (и это будет работать нормально), но это нецелесообразно, поскольку по большей части мы не знаем заранее, что это будет, поэтому привязка к0.0.0.0
решает проблему.127.0.0.1
— это петля только для контейнера. - person johnharris85   schedule 20.02.2018