node.js - 为什么 Chrome 无法检查 Docker 容器中的 nodejs 代码?

标签 node.js google-chrome docker inspect

我尝试在 Docker 容器中启动简单的 nodejs 服务器,并使用 chrome://inspect 或 WebStorm 对其进行调试。绑定(bind)了9229调试端口,但检测不通。另一方面,当我在没有 docker 的情况下运行相同的代码时,我可以在 chrome://inspect 和 WebStorm 中检查它。

谁能解释一下为什么 Chrome 无法检查 Docker 容器中的 nodejs 代码???

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 npm@5.3.0  
npm info using node@v8.2.1  
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

最佳答案

在你的 package.json scripts 中:

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

在你的 docker-compose.yaml 中:

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

我不是 100% 确定这一点,但我认为将调试器映射到 0.0.0.0 上运行会将其暴露给您的本地网络,这意味着任何人都可以在端口 9229 上连接到您的机器 IP 将能够调试您的 nodejs 服务器.当心你的 nodejs 服务器可以访问文件系统。所以永远不要用这个运行生产(或开发)服务器。

关于node.js - 为什么 Chrome 无法检查 Docker 容器中的 nodejs 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48855130/

相关文章:

google-chrome - 在 chrome 和 firefox 中启用 ActiveX 控件

javascript - 图像链接连接与 ejs 语法?

node.js - Grunt Server 和 WebStorm javascript 调试(和 SpyJS)不工作

javascript - 如何从 React 组件中的 Express 端点获取数据?

windows - 如何在 Windows 上的 chrome 中打开 Jupyter notebook

amazon-web-services - AWS ALB 与 Docker 群

javascript - 升级到 Node 7 后找不到模块 'internal/fs'

PHP FPDF 无法在 Chrome 中加载 PDF 文档

docker-compose 和用户命名空间

web-applications - docker : How To Dockerize And Deploy multiple instances of a LAMP Application