ANÚNCIO

~/questoes/devops

Qual é a principal vantagem de usar multi-stage builds em Docker?

Responda, confira o feedback e use o resultado para orientar sua revisão.
Aula de referência #07 – Criando um contanier para o NGINX servir minha SPA em React | Thi Code
Para fixar

Multi-Stage Builds em Docker: Otimizando o Tamanho da Imagem

Conceito central

Multi-stage build é uma técnica Docker que permite usar múltiplas etapas de construção em um único Dockerfile, descartando camadas desnecessárias ao final. Isso resulta em imagens muito mais leves, pois mantém apenas os arquivos essenciais para execução.

Por que essa resposta faz sentido

A alternativa correta é B porque o principal benefício do multi-stage build é reduzir drasticamente o tamanho final da imagem Docker. Na primeira etapa você usa uma imagem Node.js completa para compilar a aplicação React, mas na segunda etapa copia apenas os arquivos estáticos gerados para uma imagem NGINX muito mais enxuta, descartando toda a dependência Node.js.

Armadilhas comuns

  • Confundir multi-stage com testes automatizados: multi-stage é sobre otimização de tamanho, não sobre CI/CD ou testes
  • Pensar que multi-stage aumenta segurança ao dar mais acesso: na verdade reduz a superfície de ataque ao manter apenas o necessário
  • Acreditar que as imagens intermediárias ficam todas armazenadas: as camadas de build são descartadas, apenas a imagem final é mantida

Entenda as alternativas

A

Testes automatizados durante o build não são a principal vantagem do multi-stage. Embora seja possível adicionar testes em qualquer etapa, o foco real do multi-stage é na otimização da imagem final, não na execução de testes.

B

Esta é a resposta correta. O multi-stage build reduz o tamanho da imagem ao usar imagens base diferentes para cada etapa: Node.js pesado para compilar e NGINX leve para servir, mantendo apenas o necessário no resultado final.

C

Multi-stage build não garante acesso completo ao sistema operacional. Na verdade, a abordagem segue o princípio de menor privilégio, oferecendo apenas o necessário para cada etapa, melhorando segurança.

D

Integração com Git não é relacionada a multi-stage builds. Esta técnica é específica à construção de imagens Docker e não interfere ou facilita diretamente sistemas de versionamento.

Dica prática: Na prática, sempre use multi-stage para aplicações React com NGINX: crie um stage com Node.js para 'npm run build' e outro com NGINX para servir a pasta 'build/'. Sua imagem final ficará com poucos MB em vez de centenas de MB.

Revise pensando: Se você usar multi-stage build, quantas imagens Docker diferentes acabam sendo usadas na produção - uma, duas ou mais?