[英]VS Code not hitting breakpoints for Node app running in Docker Container
[英]How can I attach VS Code to a node process running in a docker container
我正在尝试将Visual Studio代码调试器附加到在Docker容器内运行的node.js应用程序。
我启动应用程序,如:
node --debug-brk app.js
我在docker-compose.yml
公开调试器端口:
app:
build: .
working_dir: /code
volumes:
- .:/code
command: npm run debug
ports:
- "3004:3000"
- "5858:5858"
我的launch.json
看起来像:
{
"version": "0.1.0",
"configurations": [
{
"name": "Attach",
"type": "node",
"address": "localhost",
"port": 5858
}
]
}
现在,当我启动应用程序并连接调试器时,这将正确连接(我可以看到调试器UI中已经闪烁的值),但它会停止,告诉我以下内容:
Error opening 'app.js' (File not found: /code/app.js).
这是因为docker-compose.yml
不会在root中挂载应用程序而是在/code
(请参阅docker-compose.yml
volumes
),并且VS代码会被突然的偏移混淆。
当我在容器外运行应用程序(即本地,没有偏移)时,它按预期工作,我可以按预期使用调试器。
启动配置似乎有一个cwd
选项,但我不确定这是否会对我的情况产生任何影响。
我可以修复此路径偏移吗? 我在这里错过了什么吗?
VSCode现在正式支持此功能: https : //github.com/Microsoft/vscode-node-debug/issues/8
我认为您的调试器被欺骗了,因为您的docker中的应用程序路径是/code
而在您的计算机上则是不同的。
也许像/home/m90/code
这样的东西。
因此,当您的调试器试图查看本地计算机上的代码时。 它查看/code
仅存在于docker内部的/code
。 这条路径在码头工人之外毫无意义。
如果您可以告诉调试器在您的计算机上的正确位置(再次在docker容器之外)查找代码,那将修复它。
另一种方法是在docker内外为代码提供相同的路径。
试试这个修改后的docker-compose.yml版本。 (将docker中的copy / code目录添加到主机目录/代码中)
docker-compose.yml
app:
build: .
working_dir: /code
volumes:
- /code:/code
command: npm run debug
ports:
- "3004:3000"
- "5858:5858"
只更改了一行: /code:/code
而不是.:/code
您可以尝试将当前目录绑定到/code
以便VS可以在那里找到您的源代码: sudo mount --bind . /code
sudo mount --bind . /code
对我来说,直到我使用inspect: node --inspect=5858 app.js
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.