Javascript 从Docker内部调试Node.js应用程序

Javascript 从Docker内部调试Node.js应用程序,javascript,node.js,docker,docker-compose,Javascript,Node.js,Docker,Docker Compose,调试Node.js应用程序时,我希望命令Node index.js--inspect=5858使我的index.js文件可以在端口5858上调试 当我在Docker之外的主机上运行应用程序时,我能够在Chrome开发工具中调试应用程序。我在Docker和Chrome的内部也做了同样的操作,因为开发工具无法访问端口5858上的调试器 如您所见,端口5858暴露给主机进行调试: version: '2' services: server: build: . command: no

调试Node.js应用程序时,我希望命令
Node index.js--inspect=5858
使我的index.js文件可以在端口5858上调试

当我在Docker之外的主机上运行应用程序时,我能够在Chrome开发工具中调试应用程序。我在Docker和Chrome的内部也做了同样的操作,因为开发工具无法访问端口5858上的调试器

如您所见,端口5858暴露给主机进行调试:

version: '2'
services:
  server:
    build: .
    command: node index.js --inspect=5858
    volumes:
     - .:/app
    ports:
     - "8000:8000"
     - "5858:5858"
    environment:
     - NODE_ENV = "development"
我已经在Chrome开发工具中指定了
localhost:5858
127.0.0.1:5858
网络端点,但开发工具仍然没有按照建议自动连接到它


这似乎是我的Docker设置的一个问题,但是正如您所看到的,我已经将端口暴露给了主机。可能是什么问题?谢谢。

问题是,当您在容器中运行它时,默认情况下它只侦听localhost。所以你有两个选择

使用主机网络

network\u mode:host
添加到您的服务并删除端口映射。这不是一件理想的事情

确保nodejs监听每个IP

改变

命令:node index.js--inspect=5858


command:node--inspect=0.0.0.0:5858 index.js

问题是,当您在容器内运行它时,默认情况下它只侦听localhost。所以你有两个选择

使用主机网络

network\u mode:host
添加到您的服务并删除端口映射。这不是一件理想的事情

确保nodejs监听每个IP

改变

命令:node index.js--inspect=5858


command:node--inspect=0.0.0.0:5858 index.js

您是否尝试进入容器的外壳并查看localhost:5858是否已启动并运行?如果没有,请尝试
docker exec-it container\u id sh
@serey我检查了它是否在docker中使用
netstat-tulpn运行,端口5858使用程序名
45/节点运行running@PavSidhu你在Dockerfile出口5858港口了吗?@CauêAlves我只是试了一下,运气不好。在Kitematic中,它显示了端口5858和8000,因此它们似乎已正确暴露。您是否尝试进入容器外壳,查看localhost:5858是否已启动并运行?如果没有,请尝试
docker exec-it container\u id sh
@serey我检查了它是否在docker中使用
netstat-tulpn运行,端口5858使用程序名
45/节点运行running@PavSidhu你在Dockerfile出口5858港口了吗?@CauêAlves我只是试了一下,运气不好。在Kitematic中,它显示端口5858和8000,因此它们似乎已正确暴露。