🚀 Criando um Ambiente de Desenvolvimento com NestJS no Docker
Se você está construindo uma API com NestJS, trabalhar com containers é uma excelente escolha — especialmente durante o desenvolvimento. Neste artigo, vou te mostrar como configurar sua aplicação NestJS utilizando Docker, Docker Compose e também como otimizar isso com o .dockerignore
.
✅ Pré-requisitos
Antes de começar, certifique-se de ter instalado:
✨ Criando o projeto NestJS
Vamos começar criando a aplicação que usaremos no exemplo:
yarn add -g @nestjs/cli nest new nestjs-docker
Durante o processo, o terminal vai perguntar qual gerenciador de pacotes você deseja usar. No meu caso, escolhi Yarn.
Agora abra o projeto no VSCode:
cd nestjs-docker/ code .
📁 Estrutura dos arquivos
🛠️ Criando o Dockerfile
Nosso Dockerfile
está baseado na imagem node:22-slim
. Aqui está o conteúdo:
FROM node:22-slim # Instala bash (opcional, mas útil para debug) RUN apt-get update && apt-get install -y bash && rm -rf /var/lib/apt/lists/* # Instala globalmente o Nest CLI RUN yarn global add @nestjs/cli@10 # Define o diretório de trabalho WORKDIR /home/node/app # Copia arquivos de dependência e instala pacotes COPY package*.json yarn.lock ./ RUN yarn install # Copia o restante do projeto COPY . . # Expõe a porta da aplicação EXPOSE 3000 # Comando padrão para iniciar o servidor CMD ["yarn", "start:dev"]
🔧 Criando o docker-compose.yaml
Com o Docker Compose, simplificamos o processo de execução:
services: app: build: . ports: - "3000:3000" volumes: - .:/home/node/app environment: - PORT=3000 command: yarn start:dev
O bind mount (.:/home/node/app
) permite que você edite os arquivos localmente e veja as mudanças em tempo real dentro do container.
🚫 Criando o .dockerignore
O arquivo .dockerignore
ajuda a evitar que arquivos desnecessários sejam copiados para dentro da imagem, tornando o build mais rápido e limpo:
node_modules .nuxt dist .git .vscode
▶️ Rodando a aplicação
Agora que tudo está configurado, você pode subir o ambiente com:
docker compose up --build
Você pode verificar os containers rodando com:
docker compose ps
Sua aplicação NestJS estará disponível em:
http://localhost:3000
E você verá o clássico Hello World! padrão do NestJS.
🧩 Bônus: Rodando com Dev Containers no VSCode
Imagine que você precisa instalar pacotes como @nestjs/config
. Você teria que entrar no container sempre que precisasse mexer na aplicação:
docker compose exec app bash yarn add @nestjs/config
Isso pode ser incômodo. Afinal, mesmo com a aplicação em um container, seu ambiente de desenvolvimento ainda está fora dele.
É aqui que entra o Dev Container do VSCode: ele permite que todo o seu ambiente — editor, terminal, extensões e tudo mais — rode dentro do container. É como se você estivesse trabalhando localmente, mas com todas as vantagens da conteinerização.
⚙️ Como configurar o Dev Container
- No VSCode, abra a paleta de comandos (F1) e escolha:
Dev Containers: Abrir pasta no Container...
- Selecione a pasta raiz do projeto.
- Clique em "Adicionar configuração ao workspace".
- Escolha a opção "De docker-compose.yaml".
- Na etapa de recursos, você pode buscar e adicionar ferramentas como
git
,zsh
, entre outros. - O VSCode vai iniciar o build do container com base no Docker Compose.
📂 Resultado
Depois do processo, seu projeto terá uma pasta .devcontainer
com os arquivos de configuração, e o VSCode estará rodando inteiramente dentro do container.
Agora é só rodar novamente a aplicação:
Abra o navegador e acesse:
http://localhost:3000
E pronto! O famoso Hello World estará lá, rodando num ambiente isolado, limpo e pronto para escalar.
Você pode confirmar que o container está ativo com:
docker ps
💡 Dicas adicionais
- Hot Reload: O
yarn start:dev
já cuida disso com ots-node-dev
, desde que o volume esteja montado corretamente. - Extensões do VSCode: Use o Remote Containers para codar dentro do container.
- Prod vs Dev: Este setup é para desenvolvimento. Para produção, o ideal é usar
yarn build
e rodar comnode dist/main.js
.
📦 Conclusão
Trabalhar com NestJS em containers facilita o setup entre devs, garante consistência no ambiente e ainda deixa o deploy mais previsível. Se você curtiu esse conteúdo e quer acompanhar mais tutoriais como esse, me siga no bitlynk.com.br!
🏷️ Tags
NestJS
• Docker
• Docker Compose
• Dev Container
• VSCode
• Ambiente de Desenvolvimento
• Containers
• Backend
• Node.js
• TypeScript
• Tutorial
• Hot Reload
• API REST