Multi-stage build: o que fica de fora da imagem final
Pergunta
Como um multi-stage build reduz o tamanho e a superfície de ataque da imagem final?
Resposta esperada
Você define vários `FROM` no mesmo Dockerfile. Um stage 'builder' tem o toolchain completo (compilador, dev dependencies, headers) e produz o artefato — um binário, um `dist/`, os `node_modules` de produção. O stage final parte de uma base mínima (`alpine`, `distroless`, `scratch`) e `COPY --from=builder` só o artefato pronto. Resultado: a imagem que vai pra produção não carrega compilador, gerenciador de pacotes, código-fonte nem dev deps — menos MB pra baixar/armazenar e menos coisa que pode ter CVE ou servir de ferramenta pra um atacante que entrou no container. Combina com rodar como usuário não-root e com `.dockerignore` pra o build nem enxergar `.git`, `node_modules` local, secrets.
Por que perguntam isso
Pergunta pleno. Já existe `be-docker-multi-stage`; esta foca no ângulo de segurança/superfície. Sinal bom: distroless/scratch, não-root, .dockerignore.