如何将VS代码附加到在docker容器中运行的节点进程

m90*_*m90 7 node.js docker docker-compose visual-studio-code

我正在尝试将Visual Studio代码调试器附加到在Docker容器内运行的node.js应用程序.

我启动应用程序,如:

node --debug-brk app.js
Run Code Online (Sandbox Code Playgroud)

我公开调试器端口docker-compose.yml:

app:
  build: .
  working_dir: /code
  volumes:
    - .:/code
  command: npm run debug
  ports:
    - "3004:3000"
    - "5858:5858"
Run Code Online (Sandbox Code Playgroud)

launch.json看起来像:

{
    "version": "0.1.0",
    "configurations": [
        {
            "name": "Attach",
            "type": "node",
            "address": "localhost",
            "port": 5858
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

现在,当我启动应用程序并连接调试器时,这将正确连接(我可以看到调试器UI中已经闪烁的值),但它会停止,告诉我以下内容:

Error opening 'app.js' (File not found: /code/app.js).
Run Code Online (Sandbox Code Playgroud)

这是由于这样的事实,码头工人将无法安装应用程序根,但/code(见volumesdocker-compose.yml)和VS代码是由突然偏移混淆.

当我在容器外运行应用程序(即本地,没有偏移)时,它按预期工作,我可以按预期使用调试器.

似乎有一个cwd启动配置的选项,但我不确定这是否与我的情况有任何区别.

我可以修复此路径偏移吗?我在这里错过了什么吗?