Multi stage builds sao uma das melhores features do Docker para manter imagens pequenas e organizadas. Vou mostrar como aplicar isso em um projeto Python real.
Crie um arquivo app.py simples:
# app.py
def main():
print("Hello from a multi stage build")
if __name__ == "__main__":
main()
Agora crie o Dockerfile sem multi stage:
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "app.py"]
Essa imagem inclui o pip, o cache do pip e ferramentas de build que nao precisamos em producao. O resultado e uma imagem maior que o necessario.
Com multi stage builds separamos o ambiente de build do ambiente final. Veja o mesmo Dockerfile com dois stages:
FROM python:3.12-slim AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
FROM python:3.12-slim
WORKDIR /app
COPY --from=builder /usr/local/lib/python3.12/site-packages /usr/local/lib/python3.12/site-packages
COPY . .
CMD ["python", "app.py"]
O primeiro stage instala as dependencias. O segundo stage copia so o que importa. O resultado e uma imagem final muito menor.
Para construir e ver o tamanho:
docker build -t minha-app .
docker images | grep minha-app
Para linguagens compiladas como Go o ganho e ainda maior. Veja um exemplo com uma aplicacao Go:
FROM golang:1.23 AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -o /app/server
FROM scratch
COPY --from=builder /app/server /server
CMD ["/server"]
A imagem final comeca do zero (scratch). Nao tem shell, sistema operacional, nem ferramentas de build. So o binario compilado.
Uma dica pratica: sempre nomeie seus stages com AS para facilitar a leitura. Use nomes como builder, test, ou dev. Isso ajuda a saber o que cada stage faz sem precisar contar linhas.
That's all for now.
Thanks for reading!
United States
NORTH AMERICA
Related News

Meta says it will disable the camera on its glasses if you tamper with the recording LED
5h ago
Build an AI dubbing pipeline: faster-whisper + XTTS-v2 + FFmpeg
5h ago
The Economics of Local LLMs: Why Practical Models Win in African Tech
5h ago
China's DeepSeek Developing Its Own AI Chip
16h ago

If You Want AI to Die in a Fire, Trump Might Be Your Ally
16h ago