Felipe Moacir

Docker para Frontend: "Na minha máquina funciona" nunca mais

DevOpsDockerWorkflow
Docker para Frontend: "Na minha máquina funciona" nunca mais

Você entra em um projeto novo. O npm install falha porque sua versão do Node é diferente da do colega. O banco de dados local não conecta. Você perde 2 dias configurando o ambiente.

Docker resolve isso encapsulando tudo (Node, Postgres, Redis) em containers isolados.

Docker Compose: A Receita do Bolo

Com um único arquivo docker-compose.yml, você sobe a infraestrutura inteira.

version: '3.8'
services:
  app:
    build: .
    ports:
      - "3000:3000"
    volumes:
      - .:/app
  postgres:
    image: postgres:15
    environment:
      POSTGRES_PASSWORD: root
  redis:
    image: redis:alpine

Comando mágico: docker-compose up. Pronto. Você tem o app, o banco e o cache rodando e conversando entre si.

Benefícios para Frontend

Mesmo se você só faz frontend, Docker garante que:

  1. A versão do Node.js é a mesma de produção.
  2. Você pode rodar o Backend localmente sem instalar Python/Go/Ruby na sua máquina.

.dockerignore é Essencial

Não copie node_modules, .git ou arquivos de build para a imagem. Use .dockerignore para reduzir contexto e tempo de build. Imagens menores são mais rápidas para pull e deploy.

Multi-stage Builds

Para produção, use multi-stage: um stage para build (com todas as deps) e outro para runtime (só o necessário). A imagem final fica muito menor e mais segura.

FROM node:20-alpine AS builder
WORKDIR /app
COPY . .
RUN npm ci && npm run build

FROM node:20-alpine
COPY --from=builder /app/dist ./dist
CMD ["node", "dist/index.js"]

Profissionalismo é garantir que o ambiente de desenvolvimento seja determinístico.