ANÚNCIO

~/questoes/devops

Qual é a principal vantagem do multi-stage build para imagens Docker?

Responda, confira o feedback e use o resultado para orientar sua revisão.
Aula de referência #05 – Como criar uma imagem Docker de uma SPA em React | Thi Code
Para fixar

Multi-stage Build: Otimizando Imagens Docker para React

Conceito central

Multi-stage build é uma técnica que divide o Dockerfile em múltiplas fases, permitindo que você use uma imagem pesada com ferramentas de compilação em uma fase inicial e depois copie apenas os arquivos finais para uma imagem leve na fase de produção. Isso resulta em imagens Docker muito menores e mais eficientes para colocar em produção.

Por que essa resposta faz sentido

A alternativa A está correta porque multi-stage build evita incluir todas as ferramentas de build (Node.js, npm, dependências de desenvolvimento) na imagem final. Você compila o React em uma primeira fase com Node.js, depois copia apenas os arquivos estáticos gerados para uma imagem Nginx leve, reduzindo drasticamente o tamanho da imagem que irá para produção.

Armadilhas comuns

  • Achar que multi-stage build melhora a velocidade de execução do container em produção, quando na verdade afeta apenas o tamanho da imagem
  • Confundir multi-stage build com testes em múltiplos ambientes ou com CI/CD
  • Não entender que os arquivos da primeira fase não ficam na imagem final, apenas os que você copia explicitamente com COPY

Entenda as alternativas

A

Correto. O multi-stage build reduz o tamanho porque a imagem final contém apenas os arquivos compilados e o Nginx, sem todas as dependências de desenvolvimento que ficam para trás na primeira fase.

B

Incorreto. Multi-stage build não aumenta a velocidade de execução do container. A velocidade de execução depende mais da otimização do código e da configuração do servidor. O benefício principal é reduzir o tamanho da imagem, não melhorar desempenho.

C

Incorreto. Para testar em múltiplos ambientes você usa variáveis de ambiente, diferentes branches ou ambientes de staging, não multi-stage build. Multi-stage build é apenas uma técnica de otimização de imagem.

D

Incorreto. Embora você possa usar diferentes versões do Node.js em cada fase, esse não é o propósito principal do multi-stage build. O objetivo é otimizar o tamanho final da imagem, não permitir múltiplas versões.

Dica prática: Quando criar seu Dockerfile para uma React SPA, use sempre multi-stage build com duas fases: na primeira use a imagem node para compilar (npm run build), na segunda use uma imagem nginx leve e copie apenas a pasta de build gerada. Você verá uma diferença enorme no tamanho: de centenas de MB para dezenas de MB.

Revise pensando: Se você removesse a fase com Nginx e mantivesse apenas Node.js na imagem final, qual seria o problema principal?