Preciso criar uma imagem Docker a partir de um arquivo Docker para dockerizar meu aplicativo Spring Boot. Mas quero gerar o arquivo JAR de dentro do arquivo Docker, não executando o comando mvn clean package
pelo usuário. Tentei o código abaixo, mas ele não gera o arquivo JAR:
FROM openjdk:17-jdk-slim
COPY pom.xml pom.xml
COPY src src
RUN mvn clean package
COPY ./target/my-app.jar my-app.jar
ENTRYPOINT ["java","-jar","/my-app.jar"]
Para compilar seu aplicativo Spring Boot e gerar o arquivo JAR dentro do Dockerfile, é recomendável usar uma compilação em vários estágios. Essa abordagem permite compilar seu aplicativo em um estágio e executá-lo em outro, resultando em uma imagem Docker menor e mais eficiente. Veja como você pode estruturar seu Dockerfile:
Explicação:
Estágio do Construtor:
Estágio de tempo de execução:
Este método garante que sua imagem final do Docker contenha apenas as dependências de tempo de execução necessárias, mantendo-a leve e eficiente.