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.