~/questoes/devops
Um Dockerfile multi-stage para React divide a construção em duas etapas: na primeira, o Node.js compila a aplicação gerando arquivos estáticos otimizados; na segunda, o NGINX serve esses arquivos. Esta abordagem reduz drasticamente o tamanho final da imagem Docker.
A primeira etapa (build stage) é responsável por instalar Node.js, configurar as dependências do projeto e compilar o React, gerando os arquivos estáticos (HTML, CSS e JavaScript bundled) que serão utilizados posteriormente.
A primeira etapa do multi-stage build é o build stage. Aqui o Node.js está disponível para instalar dependências via npm ou yarn e executar o comando de build (npm run build), que transforma o código React em arquivos estáticos otimizados prontos para produção.
Copiar arquivos estáticos é uma ação que ocorre na segunda etapa (production stage), não na primeira. O NGINX precisa desses arquivos já compilados para servir, o que só é possível depois que o build foi concluído.
Configurar o NGINX acontece na segunda etapa (production stage), quando a imagem NGINX enxuta é utilizada. O arquivo nginx.conf é importante, mas não faz parte da primeira etapa do build multi-stage.
Mapeamento de portas não é configurado no Dockerfile. Essa é uma configuração que ocorre quando você executa o container com o comando docker run ou em ferramentas como Docker Compose, fora do escopo do build.