当前位置: 首页 > 知识库问答 >
问题:

为什么 Chrome 无法检查 Docker 容器中的节点 js 代码?

公孙弘深
2023-03-14

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

有人能解释一下为什么Chrome不能在Docker容器中检查nodejs代码吗???

泊坞文件

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 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

共有3个答案

楚茂实
2023-03-14

相反,在docker容器中,以如下方式运行应用程序:

0.0.0.0app.js

0.0.0.0后缀

金嘉
2023-03-14

容器中需要< code > node-inspect 0 . 0 . 0:8000 。容器端口8000映射到主机端口9229。因此,您必须使用localhost:9229将chrome-dev-tools连接到容器中的节点调试器。

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

钮刚洁
2023-03-14

在你的包裹里。json脚本

"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服务器可以访问文件系统。所以永远不要用它来运行生产(或开发)服务器

 类似资料:
  • 我在CLI中运行“docker-compose up”,它工作了,我可以在本地主机:3000上与我的应用程序交互。但是如果对代码做一些修改,它就不会出现在Web上。如何在Docker内配置代码重新加载? 附言。最佳实践问题:使用docker开发真的可以吗?或者docker容器最适合用于生产。

  • 我在这个repo中用2个图像制作了3个docker容器,使用MongoDB公共图像制作了1个。我使用 < code>docker-compose.yaml是: 但是MongoDB无法与节点服务器连接,并给出了以下错误: < code>backend/db.js的代码: 添加mongouri作为环境变量后的终端输出: 新错误:

  • 我正在为nodejs应用程序上的典型开发人员规划工作流。我想你们大多数人都会: git clone[appcode](具有卷映射到本地路径的Dockerfile) 然后我编辑一些代码,最好使用像WebStorm或文本编辑器Sublime等IDE。然后终端Ctrl C终止当前进程 以上所有内容看起来都很标准吗? 我的主要问题是,是否有人使用IDE或节点检查对容器进行调试? 我尝试过暴露端口等..连接

  • 问题内容: 在mem_limit太低的docker容器崩溃后,如何 在 容器中检 入 该容器的mem_limit?如果mem_limit设置为低,我想在启动时显示错误消息并退出。 问题答案: 在容器中为我工作,感谢塞巴斯蒂安的想法

  • 我已经创建并将php-apache容器与MYSQL容器链接起来。但是当我试图从php文件中使用PDO建立连接时,我得到了错误。有人知道怎么修好它吗?多谢了。 PDO错误: 致命错误:未捕获的PDOException:PDO::__Construct():php_network_getAddress:getaddrinfo失败:名称或服务在/var/www/html/index.php:3 Stac

  • 我找到了很多关于如何在中运行的博客,但没有一个真正解释这样做的好处。 1)我希望服务器的大部分配置都在版本控制之下。 2)当我尝试新功能或配置时,我希望能够在我的计算机上本地运行构建服务器 3)我希望能够轻松地在一个新的环境中建立一个构建服务器(例如。在本地服务器上,或在云环境(如AWS)中)