Node.js em Docker pode ser lento e pesado. Técnicas específicas reduzem imagem de 1GB para 100MB e aceleram builds em 5x.
Carregando
Node.js em Docker pode ser lento e pesado. Técnicas específicas reduzem imagem de 1GB para 100MB e aceleram builds em 5x.
Node.js em Docker pode ser lento e pesado. Técnicas específicas reduzem imagem de 1GB para 100MB e aceleram builds em 5x.
COPY package*.json antes de COPY código. npm install cacheia se package.json não muda. Economiza minutos por build.
NUNCA copie node_modules local. Use npm ci (lockfile strict). Multi-stage: build deps separado de runtime deps.
node:18-alpine vs node:18 = 170MB vs 1GB. Alpine suficiente para 95% dos casos. Use debian apenas se nativa deps.
npm ci: deleta node_modules, instala do lockfile, mais rápido. npm install: resolve deps, atualiza lockfile. CI sempre npm ci.
• npm ci ao invés de npm install sempre
• package-lock.json commitado no git
• Multi-stage para apps TypeScript
• Dumb-init ou tini para PID 1 correto
• NODE_ENV=production para otimizações
• Healthcheck endpoint /health
• COPY node_modules do host
• npm install sem lockfile
• Não usar .dockerignore
• COPY . . antes de package.json
• Rodar como root (user node existe)
Quando usar cada um