【发布时间】:2018-09-03 11:50:10
【问题描述】:
我有一个 java 应用程序的 .war 文件,并希望将其部署到 docker 容器中。
我的 Dockerfile 看起来像这样:
FROM java:8
EXPOSE 8080
ADD /App.war app.war
ENTRYPOINT ["java", "-jar", "app.war"]
我的App.war 在同一个目录中。
当我想使用以下命令运行它时:
docker run -p 8080:8080 -t app
它会抛出以下异常:
no main manifest attribute, in app.war
但是,当我检查 app.war 时,/META-INF/MANIFEST.MF 中有一个清单,说明了以下选项:
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
据我了解,错误消息表明清单中缺少 Main-Class 属性(这是不可能的,因为它在那里)。 我也尝试将真正的类添加为 Main-Class。
这导致了同样的错误。
有人可以帮我重回正轨吗?
【问题讨论】:
-
为什么需要将其部署为战争?我看到您将存档用作 uberjar。
标签: java docker gradle manifest