我有一个 WAR 文件,我想在 Docker 中部署它,但是当我在构建后使用关联的端口运行它时,我收到此错误:no main manifest attribute, in app.war
.
我的 Dockerfile 看起来像这样
FROM java:8
EXPOSE 8080
ADD /service.war app.war
ENTRYPOINT ["java","-jar","app.war"]`
应该怎么做才能解决此错误?
我认为你需要一个tomcat,而不是一个java图像。即使没有 Dockerfile,您也可以尝试。在与 .war 文件相同的目录上启动此命令:
docker run --name myTomcat -p 8080:8080 --rm -i -v $(pwd)/service.war:/usr/local/tomcat/webapps/app.war tomcat
这将启动一个 Tomcat 服务器,其中部署了您的战争,并将端口 8080 从您的容器映射到您的 docker 主机。我希望它有所帮助。
我有类似的问题。我的问题是 fabric8 docker-maven-plugin 中的以下配置:
<execution>
<id>docker-build</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
构建 docker 镜像绑定到 maven包阶段,这意味着当我触发 docker 镜像构建时,构建 jar 文件本身并没有完成。一旦我将执行阶段更新为晚于软件包的任何内容,例如验证或安装,问题就消失了。