在vscode中使用docker调试nestjs项目不起作用



我有一个使用docker的NestJs项目,我想在VSCode中调试它。

在包中。json,我有:"start:debug": "nest start --debug 0.0.0.0:9229 --watch"

在docker-compose,我有:

version: '3.8'
services:
core-database:
image: postgis/postgis:latest
volumes:
- /tmp/rg-core/postgres/data:/var/lib/postgresql/data
environment:
- POSTGRES_DB=***
- POSTGRES_USER=***
- POSTGRES_PASSWORD=***
ports:
- 5433:5432
core-service:
container_name: core-service
working_dir: /usr/src/app
build:
context: .
dockerfile: ./Dockerfile.dev
volumes:
- .:/usr/src/app
- /usr/src/app/node_modules
ports:
- 9001:9001
#debugging port
- 9229:9229
# Database
- DB_HOST=***
- DB_PORT=5432
- DB_NAME=***
- DB_USER=***
- DB_PASSWORD=***

command: 'yarn run start:debug'

在推出。我有:

{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Attach",
"port": 9229,
"request": "attach",
"localRoot": "${workspaceFolder}",
"type": "node",
"address": "0.0.0.0",
"restart": true,
"remoteRoot": "/usr/src/app",
"sourceMaps": true,
"skipFiles": [
"<node_internals>/**"
]
}
]
}

我正在运行docker compose并在VSCode中开始调试,但它没有在断点处停止。

我做错了什么吗?应该怎么做呢?

这几天我一直在处理同样的问题。

从我的研究,VS Code调试控制台默认情况下是监听console.logs。然而NestJS Logger正在记录到stdout/stderr(process.stdout.write),因此launch.json需要额外的行:

{
... ,
"outputCapture": "std"
}

遗憾的是,这仍然不足以使它工作。

为了解决这个问题,我将一个正在运行的容器的终端手动连接到VS Code集成终端,执行docker container attach --no-stdin <container-name>

这仍然不是一个真正的解决方案,所以我希望有人带来一个。谢谢你提出这个问题。你能分享你的Dockerfile的内容以供完整参考吗?

Dockerfile中缺少9229端口导出。

在包中。json:"dev": "nest start --debug 0.0.0.0:9229 --watch"

docker-compose:

version: '3.8'
services:
core-database:
image: postgis/postgis:latest
volumes:
- /tmp/rg-core/postgres/data:/var/lib/postgresql/data
environment:
- POSTGRES_DB=***
- POSTGRES_USER=***
- POSTGRES_PASSWORD=***
ports:
- 5433:5432
core-service:
container_name: core-service
working_dir: /usr/src/app
build:
context: .
dockerfile: ./Dockerfile.dev
volumes:
- .:/usr/src/app
- /usr/src/app/node_modules
ports:
- 9001:9001
#debugging port
- 9229:9229
# Database
- DB_HOST=***
- DB_PORT=5432
- DB_NAME=***
- DB_USER=***
- DB_PASSWORD=***

command: 'yarn run dev'
在launch.json中:
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug core-service",
"type": "node",
"request": "attach",
"remoteRoot": "/usr/src/app",
"port": 9229,
"restart": true
}
]
}

在Dockerfile:

...
EXPOSE 9001 9229

最新更新