Como usar debug em NodeJS com Docker
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 ❤