Sobes.tech
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.