我觉得我很接近让docker-compose和节点检查员一起玩得很好,但如果有人能告诉我他们如何设置他们的docker-compose文件以及它是如何工作的解释,我会很高兴。
这里有我的compose.yml文件,其中只包含节点应用程序:
app:
image: my-node-app
volumes:
- '~/mycode:/app/code'
ports:
- "3000:3000"
command: /bin/bash
另请注意我使用Docker for Mac。 (虽然我认为不应该改变太多......)
我找到了一些关于如何做到这一点的教程,但信息要么过时了,要么看起来不完整。以下是两种主要方法(对我来说都没有用):
1)来自: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)
和来自: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
需要一个小技巧是为节点应用程序容器添加端口5858映射,以便Node Inspector可以在主机上将其视为端口5858:
node-app:
ports:
- "5858:5858" # Port needs to be mapped to host so that debugger container can access it
答案 0 :(得分:0)
您必须在应用Dockerfile中添加EXPOSE 5858
或EXPOSE 9229
。
答案 1 :(得分:0)
节点的调试接口需要知道可在Docker容器的本地网络外部访问,因此检查器应以
启动node --inspect-brk=0.0.0.0:9229 index.js
将index.js替换为要运行的任何节点。
使用 --inspect-brk
代替--inspect
,以便可以在脚本开始时附加调试器,以便它可以跟踪其所做的一切,从而使调试器可以知道正在发生的一切,从而有效地允许正确的调试。
广播IP导致检查器监听所有内容,而不关闭本地主机外部的连接(默认设置)。默认端口为9229。