29.04.2025

O que é Multi-stage build

Ao desenvolver aplicações modernas, especialmente aquelas que serão distribuídas em ambientes baseados em contêineres, como o Docker, é fundamental garantir que a imagem gerada seja leve, segura, eficiente e fácil de manter. Imagens grandes e cheias de dependências desnecessárias não apenas consomem mais espaço e largura de banda, mas também aumentam o tempo de build, dificultam o deploy e podem expor vulnerabilidades. Para lidar com esse desafio, uma técnica poderosa e elegante é o Multi-stage build — um recurso nativo do Docker que permite organizar o processo de construção da imagem em várias etapas, isolando fases como compilação, testes e empacotamento. Neste artigo, vamos entender em detalhes o que é o Multi-stage build, por que ele é tão útil, e como utilizá-lo de forma eficaz no seu fluxo de desenvolvimento.

Por que usar Multi-stage build?

Durante o processo de criação de uma imagem Docker, é comum precisar instalar várias dependências, ferramentas de compilação e bibliotecas. No entanto, essas ferramentas não são necessárias na imagem final, e sua presença pode:

Com o Multi-stage build, é possível dividir o processo de construção da aplicação em várias etapas, mantendo na imagem final apenas o que é essencial para execução.

Como funciona?

Um Dockerfile com Multi-stage build utiliza múltiplas instruções FROM, cada uma iniciando um novo estágio de construção. É possível copiar arquivos entre os estágios — por exemplo, copiar um binário compilado da primeira etapa para a última.

Exemplo prático

Vamos ver um exemplo com uma aplicação em Go:

# Etapa 1: build da aplicação
FROM golang:1.21 as builder

WORKDIR /app
COPY . .
RUN go build -o myapp

# Etapa 2: imagem final
FROM debian:bullseye-slim

WORKDIR /app
COPY --from=builder /app/myapp .

CMD ["./myapp"]

Neste exemplo:

Vantagens:

Recursos avançados

Conclusão

O Multi-stage build é uma técnica essencial para qualquer desenvolvedor ou DevOps que utiliza Docker. Ele permite criar imagens mais limpas, leves e seguras. Se você ainda não adotou essa abordagem nos seus projetos, vale muito a pena começar agora.