Sobes.tech
Senior

O que é a construção multi-stage no Docker?

sobes.tech IA

Resposta da IA

Construção multi-stage no Docker é uma técnica que permite criar várias fases de compilação num único Dockerfile, onde cada fase pode usar a sua própria imagem base. A ideia principal é separar as fases de compilação (por exemplo, compilação, instalação de dependências) da imagem final, para que no contêiner final apenas os ficheiros necessários para executar a aplicação sejam incluídos, sem ferramentas ou artefactos desnecessários.

Isto reduz significativamente o tamanho da imagem final e aumenta a segurança, pois no contêiner final não há ferramentas de compilação.

Exemplo de Dockerfile com construção multi-stage:

# Fase de compilação
FROM node:18 AS builder
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm install
COPY . .
RUN npm run build

# Fase final
FROM nginx:alpine
COPY --from=builder /app/build /usr/share/nginx/html

Aqui, primeiro é feita a compilação da aplicação React, e depois apenas os ficheiros estáticos prontos são copiados para uma imagem leve do nginx.