Sobes.tech
Junior — Middle

Pode explicar o princípio de funcionamento da construção em múltiplas etapas no Docker e por que ela é utilizada?

sobes.tech IA

Resposta da IA

A construção multi-stage (multi-stage build) no Docker permite criar imagens em várias etapas, o que ajuda a reduzir o tamanho da imagem final e melhorar a segurança.

A ideia é que nas primeiras etapas a aplicação seja construída e compilada usando todas as ferramentas e dependências necessárias, e na última etapa apenas os arquivos necessários para executar sejam copiados para uma imagem base mínima.

Vantagens:

  • Redução do tamanho da imagem final ao excluir ferramentas de construção.
  • Aumento da segurança, pois na imagem final não há ferramentas desnecessárias.
  • Simplificação do Dockerfile, pois todas as etapas são descritas em um único arquivo.

Exemplo:

# Etapa de construção
FROM openjdk:17-jdk AS build
WORKDIR /app
COPY . .
RUN ./gradlew build

# Etapa de execução
FROM openjdk:17-jre
WORKDIR /app
COPY --from=build /app/build/libs/myapp.jar ./
CMD ["java", "-jar", "myapp.jar"]

Aqui, a aplicação é primeiro construída com JDK, e depois, na imagem mínima com JRE, apenas o arquivo jar pronto é copiado.