Skip to content

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

AbordagemTamanho MédioUso 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;"]