我觉得我很接近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 5858
或EXPOSE 9229
Node的调试接口需要知道可以在Docker容器的本地网络之外访问,所以检查器应该以
开头。node --inspect-brk=0.0.0.0:9229 index.js
将index.js替换为你想要运行的任何节点
使用--inspect-brk
代替--inspect
,以便调试器可以在脚本开始时附加,以便它可以跟随它所做的任何事情,这允许调试器知道发生了什么,有效地允许适当的调试。
广播IP使检查器监听所有内容,而不关闭来自本地主机外部的连接(默认值)。9229为默认端口号