一尘不染

如何使用docker-compose.debug.yml调试在docker中运行的节点?

docker

我已经使用vs
docker扩展
来创建docker文件。但我不知道使用docker-
compose.debug.yml调试代码的“正确”方法是什么,例如,如何设置环境。所以我只要按F5键,所有的魔术都将发生

我确实找到了一种调试代码的方法。首先docker-compose -f docker- compose.debug.yml在终端中运行。然后使用容器内节点开发:Visual Studio
Code中
的launch.json 附加到我在docker
中的节点

但是我认为Code可以提供一种简化调试过程的简单方法。


阅读 896

收藏
2020-06-17

共1个答案

一尘不染

您可以执行此操作,但需要进行一些修改。

launch.json

{
    // Use IntelliSense to learn about possible Node.js debug attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "attach",
            "name": "Attach to Remote",
            "address": "127.0.0.1",
            "port": 9229,
            "localRoot": "${workspaceRoot}",
            "remoteRoot": "/usr/src/app",
            "preLaunchTask": "start_node_compose"
        }
        // {
        //     "type": "node",
        //     "request": "launch",
        //     "name": "Launch Program",
        //     "program": "${workspaceRoot}/index.js"
        // }
    ]
}

如您所见,我评论了本地启动,并使其成为第一个启动程序,因此它可以在F5上运行。接下来,我们需要定义一个start_node_compose任务

task.json

{
    "version": "0.1.0",
    "command": "myCommand",
    "isShellCommand": false,
    "args": [],
    "showOutput": "always",
    "tasks": [
        {
            "taskName": "start_node_compose",
            "showOutput": "always",
            "isBuildCommand": true,
            "command": "/bin/bash",
            "args": [
                "-c",
                "docker-compose -f docker-compose.yml -f docker-compose.debug.yml up -d && sleep 10"
            ]
        }
    ]
}

Then when you run the command using F5 you will be able to hit the breakpoint

Debug
Breakpoint

2020-06-17