我试图设置我的VSCode环境,这样我就可以通过点击F5一步调试我的dockerized node.js程序。
目前我的设置如下:
.vscode / launch.json:
{
"version": "0.1.0",
"configurations": [
{
"name": "Attach",
"type": "node",
"protocol":"inspector",
"request": "attach",
"port": 5858,
"restart": false,
"sourceMaps": false,
"localRoot": "${workspaceRoot}/",
"remoteRoot": "/usr/local/src/my-app"
}
]
}
搬运工-compose.debug.yml:
version: "3"
services:
app:
build: .
ports:
- "3000:3000"
- "5858:5858"
entrypoint: node --inspect-brk=0.0.0.0:5858 app/entry.js
networks:
- appnet
networks:
appnet:
现在,当我在外部终端中执行docker-compose -f ./docker-compose.debug.yml up --build
,然后运行"附加" VSCode中的配置。
但是,在从VSCode中连接到远程(docker)进程之前,我无法找到运行docker-compose的方法。目标是能够点击F5并让VSCode启动docker-compose,并自动将其自身附加到它。
我尝试使用"通过NPM启动"来调用docker-compose。 VSCode配置并添加
"docker-debug" : "docker-compose -f ./docker-compose.debug.yml up --build"
到我的package.json脚本部分。
但这只是部分工作,因为调试器似乎忽略了配置的remoteRoot
属性,因此,对于调试我的程序是完全没用的(例如:它不接受断点,并且只有文件它知道如何调试nodes.js内部......)
我知道如何解决这个问题吗?
答案 0 :(得分:0)
这对我有用,在您的launch.json中:
{
"name": "Debug Jest",
"type": "node",
"request": "launch",
"cwd": "${workspaceFolder}",
"runtimeExecutable": "npm",
"runtimeArgs": ["run-script", "debug"],
"address": "127.0.0.1",
"port": 9230,
"localRoot": "${workspaceFolder}",
"remoteRoot": "/usr/src/app/server" # path to your nodejs workspace in docker
},
package.json,您运行服务:
"scripts": {
"debug": "docker-compose -p dev -f docker-compose-dev.yml up jestdebug"
},
以及在docker-compose-dev.yml中:
version: '3.4'
services:
jestdebug:
image: node:10.15.3-alpine
working_dir: /usr/src/app/server
command: node --inspect-brk=0.0.0.0:9230 node_modules/.bin/jest --runInBand ${jestdebug_args}
volumes:
- nodemodules:/usr/src/app/server/node_modules
- ../server:/usr/src/app/server
ports:
- '9230:9230' # for debuging
networks:
- backend
depends_on:
- nodejs
tty: true
# ...other services