Estratégias de Deploy com Docker
Ao fazer deploy de aplicações web (como este site VitePress ou aplicações Vue/React), a técnica de Multi-Stage Build é padrão da indústria para garantir segurança e leveza máxima.
1. O Conceito de Multi-Stage
Em vez de enviar o Node.js, compiladores e arquivos de desenvolvimento para o servidor de produção, compilamos o projeto em uma primeira etapa e copiamos apenas os arquivos estáticos finais (HTML, CSS, JS) para um servidor Nginx Alpine minimalista.
Comparativo de Tamanho de Imagem
| Abordagem | Tamanho Médio | Uso de Memória |
|---|---|---|
| Imagem com Node.js | ~400 MB - 1 GB | ~80 MB - 150 MB |
| Multi-Stage Nginx Alpine | ~25 MB | ~6 MB - 12 MB |
2. Exemplo de Dockerfile Otimizado
dockerfile
# Estágio 1: Build
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run docs:build
# Estágio 2: Produção Minimalista
FROM nginx:alpine
COPY --from=builder /app/docs/.vitepress/dist /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]