Como usar debug em NodeJS com Docker

3 min readMar 18, 2023

--

Sempre temos que colocar um console.log para verificar se o dado está passando por ali ou até mesmo ver qual o tipo de erro que esta acontecendo.

Deste exemplo iremos usar um projeto que estou construindo com NestJS .

No vscode precisamos criar um arquivo .vscode/launch.json

{
"version": "0.2.0",
"configurations": [
{
"name": "Docker: Attach to Node",
"type": "node",
"request": "attach",
"port": 9229,
"address": "0.0.0.0",
"localRoot": "${workspaceFolder}",
"remoteRoot": "/app",
"protocol": "inspector",
"restart": true,
"sourceMaps": true
}
]
}

Agora precisamos criar o Dockerfile.node expondo a porta 9229 para o debug ouvir

FROM node:18.15.0-alpine

WORKDIR /app

RUN mkdir -p /app

COPY package.json yarn.lock /app/

RUN yarn cache clean \
rm node_modules/ \
yarn install --frozen-lockfile

COPY . /app/

EXPOSE 3005 9292

Iremos precisar criar o docker-compose.yml , o que é mais importante é o entrypoint que iremos rodar o comando start:debug

version: '3.8'
services:
clean-arch-node-api:
build:
context: .
dockerfile: Dockerfile.node
container_name: clean-arch-node-api
entrypoint: sh -c 'yarn install --frozen-lockfile && yarn start:debug'
env_file:
- .env
ports:
- ${PORT}:${PORT}
- ${PORT_DEBUG}:${PORT_DEBUG}
networks:
- clean-arch-net
volumes:
- '/app/node_modules'
- './:/app'

clean-arch-node-api-nginx:
build:
context: .
dockerfile: Dockerfile.nginx
container_name: clean-arch-node-api-nginx
ports:
- ${NGINX_PORT}:${NGINX_PORT}
expose:
- ${NGINX_PORT}
networks:
- clean-arch-net
links:
- clean-arch-node-api

networks:
clean-arch-net:

Agora podemos criar o script no package.json para dar o start no debug e ouvindo a porta 9229

   "start:debug": "nest start --debug 0.0.0.0:9229 --watch"

No vscode você pode clicar na linha do lado esquerdo(bolinha em vermelho) para ver se o codigo esta chegando ali através do debug

Vamos precisar rodar nossa aplicação com esse comando:

    "start:docker": "docker-compose up" 

Precisamos apertar o F5 par habilitar o debug no vscode, e a barra em baixo fica vermelha

Com o debug habilitado e a aplicação rodando, vamos executar no browser http://localhost:3002 , quando fazemos isso o vscode abre e mostra o debug no ponto vermelho aonde colocamos

Assim conseguimos usar o debug em aplicações nodejs com docker

Repo do exemplo das imagens: https://github.com/williamkoller/clean-arch-node-api

Esse post foi feito por amor a tecnologia ❤

--

--

William Koller
William Koller

Written by William Koller

Senior Software Engineer (Backend)

No responses yet