Implementar el archivo .war en el contenedor de Docker: sin atributo de manifiesto principal en app.war

dave0688

Tengo un archivo .war de mi aplicación Java y me gustaría implementarlo en un contenedor Docker.

Mi Dockerfile se ve así:

FROM java:8
EXPOSE 8080
ADD /App.war app.war
ENTRYPOINT ["java", "-jar", "app.war"]

Tengo mi App.waren el mismo directorio.

Cuando quiero ejecutarlo con el siguiente comando:

docker run -p 8080:8080 -t app

lanza la siguiente excepción:

no main manifest attribute, in app.war

Sin embargo, cuando inspecciono app.war, hay un manifiesto en /META-INF/MANIFEST.MF que indica las siguientes opciones:

Manifest-Version: 1.0
Start-Class: com.package.app.AppMainClass
Spring-Boot-Classes: WEB-INF/classes/
Spring-Boot-Lib: WEB-INF/lib/
Spring-Boot-Version: 1.4.0.RELEASE
Main-Class: org.springframework.boot.loader.WarLauncher

Por lo que entiendo, el mensaje de error indica que falta un atributo de clase principal en el manifiesto (lo cual es imposible porque está allí). También intenté agregar la clase real como Main-Class.

Eso llevó al mismo error.

¿Puede alguien ayudarme a volver a encarrilarme?

Sasha Shpota

En primer lugar, no cree un proyecto de arranque de primavera como WAR. Solo necesitaría WAR si tuviera algún proyecto antiguo que lo obligara a implementar la aplicación en un servidor web / contenedor de servlets. Deberá eliminar la lógica relacionada con la guerra de su script de compilación.

Segundo. Asegúrese de estar construyendo el proyecto correctamente. Si es gradle, debe construirlo con ./gradlew build, para uso de maven mvn package. Eso empaquetará su archivo como un uberjar, incluidas todas las dependencias necesarias y la estructura de archivo adecuada.

Encuentre más detalles sobre cómo poner una aplicación de arranque de primavera en Docker en las guías del usuario .

Si y solo si por alguna ocurrencia extraña necesita construirlo como WAR y ejecutarlo como un archivo ejecutable, asegúrese de hacerlo usando el complemento war proporcionado por Spring Boot (no el complemento war incorporado). Esa es la única forma funcional de crear un archivo de guerra ejecutable.

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

Ningún atributo de manifiesto principal en el archivo .jar

Error de Heroku: sin atributo de manifiesto principal, en el archivo JAR para la aplicación de arranque de primavera

Implementar Angular 6 en el archivo WAR de Java

cómo implementar el archivo war en tomcat 7 del contenedor docker

Maven: sin atributo de manifiesto principal, en target / xx.jar, no se puede ejecutar el archivo jar

Cargador de muelle de composición de: ningún atributo principal de manifiesto en /app.war

¿Cómo especificar mi propio archivo de manifiesto en el complemento War de Gradle?

No se puede especificar el atributo de manifiesto principal en Intellij

SecurityException durante la ejecución del archivo jnlp (falta el atributo de manifiesto de permisos requeridos en el jar principal)

"Sin atributo de manifiesto principal" en ----. Jar Netbeans

Sin principal atributo de manifiesto, en server.jar

Cómo implementar un archivo war en Tomcat desde Jenkins sin usar el complemento

Docker-componer, implementar war en Tomcat, ejecutar el servicio de Oracle

Error al ejecutar el archivo jar desde la línea de comando: "sin atributo de manifiesto principal"

Implementar automáticamente el archivo war de jenkins sin Tomcat's Manager

Implementar el archivo war en Tomcat con una ruta diferente

Error al implementar el archivo WAR en JBOSS EAP 6.4

El archivo sigue regresando en el contenedor de Docker

favicon.ico en el archivo WAR de Java

Definir el contexto de servlet en archivo WAR

Excluir archivos de propiedades en el archivo * .war usando ensamblados

Implementar el archivo WAR en Tomcat of Spring Boot y Angular App

¿Por qué obtengo una página en blanco al implementar el archivo war de Angular Spring en Apache Tomcat?

Implementar cambios en el contenedor de Docker con Jenkins

Después de la implementación de WAR en el contenedor de tomcat docker, siempre obtiene 404

OpenShift: ningún atributo principal de manifiesto en el proyecto maven jar

¿Desplegar el archivo WAR en Openshift sin usar GIT?

¿Cómo poner la versión del proyecto maven en el manifiesto del archivo war?

Reconstruir el contenedor de Docker en cambios de archivo

TOP Lista

CalienteEtiquetas

Archivo