Multi-stage build é a técnica mais impactante para otimizar imagens Docker. Aprenda a separar build de produção e reduzir tamanho em até 90%.
Conceitos Principais
Múltiplos FROM
Cada FROM inicia novo stage. Stage anterior não vai para imagem final. Apenas última stage vira imagem. Pode nomear stages com AS.
COPY --from
Copia arquivos entre stages. `COPY --from=builder /app/dist ./dist`. Pega apenas o necessário do build stage.
Build Stage
Instala tudo: devDependencies, build tools, compiladores. Gera artefatos (dist/, bundle.js). Descartado na imagem final.
Runtime Stage
Imagem limpa, só produção. Apenas runtime, código compilado, prod dependencies. 90% menor que build stage.
Passo a Passo
Boas Praticas
Recomendacoes
• Nomeie stages significativamente (builder, deps, runtime)
• Use imagem maior no build, Alpine no runtime
• Compartilhe layers comuns entre stages
• Considere stage intermediário para deps
Erros Comuns
Evite estes erros
• Copiar node_modules do builder (reinstale no runtime)
• Usar mesma imagem nos dois stages
• Não aproveitar cache entre stages