1
resposta

Imagem Docker não Localiza a class main.

Estou usando a java 21, maven 3.9.9. Ao executar a img/container no docker logo aparece a seguinte mensagem: no main manifest attribute, in ms-autenticacao-usuario-0.0.1-SNAPSHOT.jar Já add tanto o plugin maven-jar-plugin quanto o spring-boot-maven-plugin no pom.xml e não resolveu meu problema.

segue meu Dockerfile FROM maven:3.9.9-eclipse-temurin-21-alpine AS build WORKDIR /app COPY pom.xml . COPY src ./src RUN mvn clean package -DskipTests

#Cria e Executa a imagem docker FROM eclipse-temurin:21.0.7_6-jre-alpine WORKDIR /app COPY --from=build /app/target/ms-autenticacao-usuario-0.0.1-SNAPSHOT.jar . #Rodar a img CMD ["java", "-jar", "ms-autenticacao-usuario-0.0.1-SNAPSHOT.jar"]

o arquivo .jar foi de fato copiado para a pasta /app, porém não localiza a Class main no manifest. .jar da img Docker. Detalhe a app inicia normalmente pelo VSCODE.

Alguém tem alguma solução?

1 resposta

Boa tarde! O problema é que seu mvn clean package gera um .jar simples, sem as dependências e sem o manifest configurado com a classe main.

Solução rápida:

Adicione e use o Spring Boot Maven Plugin com o comando correto:

No Dockerfile, altere:

RUN mvn clean package -DskipTests

para:

RUN mvn clean spring-boot:repackage -DskipTests

E confirme no pom.xml se tem:

<plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

Isso gera um jar executável, com o manifest correto e todas as dependências.

Outra opção:

Rode local:

mvn spring-boot:repackage

E depois monte sua imagem.