logo

Banner do Post

Debugando um código NodeJS que está rodando em um servidor Docker no VSCode.

O Docker é uma ferramenta incrível que empacota o código e todas as suas dependências para que a aplicação funcione de forma rápida e confiávl de um ambiente para outro. Porém, o processo de configuração dessa ferramenta é um pouco complexo, entretanto, nesse breve artigo você entenderá como pode facilmente debugar seu código NodeJS que está rodando em um servidor Docker.

Instalando extensão

Primeiramente você irá precisar ter instalado no seu VSCode a extensão do docker, essa extensão será importante, pois ela faz com que seu editor de código possa depurar uma aplicação dentro do Docker. Também nos permitirá gerir imagens e containers. Basta procurar por Docker na aba de extensões do seu VSCode e instalar.

Configurando

Dentro do seu docker-compose.yml você irá expor a porta 9229 que o debugger vai utilizar para inspecionar a aplicação.

 ports:
      - "80:3000"
      - "5678:5678"
      - "9229:9229"

Caso você esteja rodando o seu código diretamente pelo terminal você deve adicionar -p 9229:9229 para o comando do docker-run.

Exemplo: docker run -d -p 80:3000 -p 9229:9229 node:15.0.1-alpine

Configurando o package.json

No comando que é utilizando para rodar o script é importante mostrar para qual porta o inspect deve observar, por padrão é a porta 127.0.0.1:9229, porém para o Docker será a 0.0.0.0:9229.

Exemplo: "ts-node-dev -r tsconfig-paths/register --inspect=0.0.0.0 --transpile-only --ignore-watch node_modules --respawn src/shared/infra/http/server.ts"

Configurando o launch.json

Depois de gerar o seu launch.json indo na aba do Debug e clicando na opção Adicionar configuração, o seu arquivo deverá ter as seguintes informações no array configurations:

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "attach",
      "name": "Docker Debugger",
      "port": 9229,
      "address": "localhost",
      "remoteRoot": "/",
      "sourceMapPathOverrides": {
        "/usr/app/*": "${workspaceRoot}/*"
      },
      "skipFiles": [
        "<node_internals>/**/*.js"
      ]
    }
  ]
}

Agora basta rodar o seu debbuger que ele vai conseguir inspecionar o seu código que está dentro do Docker.

Qualquer dúvida, dicas ou sugestões, não se esqueça de deixar nos comentário aqui em baixo.

Espero que tenha curtido 🤟

Typescript: interfaces Vs Type

Próximo post