我尝试在 Docker 容器内启动简单的 NodeJS 服务器并使用 chrome://inspect 或 WebStorm 对其进行调试。调试端口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 节点开发
npm info it worked if it ends with ok
npm info using np[email protected] /cdn-cgi/l/email-protection
npm info using [email protected] /cdn-cgi/l/email-protection
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 服务器可以访问文件系统。因此,永远不要用它来运行生产(或开发)服务器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)