Junior — Middle
Como implementar uma construção em múltiplas etapas de uma imagem de contêiner?
sobes.tech IA
Resposta da IA
A construção multi-estágio (multi-stage build) no Docker permite criar várias fases de construção num único Dockerfile, o que ajuda a reduzir o tamanho da imagem final e separar as fases de compilação da fase de execução.
A ideia principal é usar várias instruções FROM num único Dockerfile, onde cada etapa pode usar os artefactos das etapas anteriores.
Exemplo:
# Etapa de construção
FROM golang:1.20 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp
# Etapa da imagem final
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/myapp .
CMD ["./myapp"]
Aqui, primeiro constrói-se a aplicação em Go, e depois, na imagem final, apenas o binário compilado é copiado, sem os ficheiros fonte nem as ferramentas de construção.