使用docker-compose在docker容器中使用节点检查器



我觉得我很接近docker-compose和node-inspector很好地发挥在一起,但如果有人能告诉我他们如何设置他们的docker-compose文件以及解释它是如何工作的,我将很高兴。

这是我写的。Yml文件中只有node应用程序的样子:

  app:
    image: my-node-app
    volumes:
     - '~/mycode:/app/code'
    ports:
     - "3000:3000"
    command: /bin/bash

还请注意,我正在使用Mac的Docker。(虽然我不认为应该改变太多…)

我找到了一些关于如何做到这一点的教程,但是这些信息要么过时了,要么看起来不完整。以下是两种主要的方法(两种方法对我都不起作用):

1) From: https://github.com/seelio/node-inspector-docker/issues/1

app:
    image: my-node-app
    ports:
     - "3000:3000"
    command: /bin/bash
    volumes_from:
     - code
debugger:
    image: node-debug
    depends_on: 
      - app
    # `service` instead of `container` for an easier cold start
    network_mode: 'service:app'
    volumes_from:
      - code
code:
    image: node
    volumes:
     - '~/mycode:/app/code'

2)

and from: https://keylocation.sg/our-tech/debugging-nodejs-in-docker-using-node-inspector:

 debugger:
    container_name: debugger
    network_mode: host
    extends:
      service: base
    volumes:
      - /app/containers/debugger:/app/container
需要的一个小技巧是为Node -app容器添加端口5858映射,以便Node Inspector可以将其视为主机上的端口5858:
 node-app:
    ports:
      - "5858:5858" # Port needs to be mapped to host so that debugger container can access it

您必须在您的应用程序Dockerfile中添加EXPOSE 5858EXPOSE 9229

Node的调试接口需要知道可以在Docker容器的本地网络之外访问,所以检查器应该以

开头。
node --inspect-brk=0.0.0.0:9229 index.js

将index.js替换为你想要运行的任何节点

使用--inspect-brk代替--inspect,以便调试器可以在脚本开始时附加,以便它可以跟随它所做的任何事情,这允许调试器知道发生了什么,有效地允许适当的调试。

广播IP使检查器监听所有内容,而不关闭来自本地主机外部的连接(默认值)。9229为默认端口号

最新更新