猿问

在没有 Maven jetty 的情况下从命令行运行战争

我试图将一个开源软件放入 docker 容器(https://github.com/att/XACML)中,但在这个容器中我无法使用 maven。运行此服务的文档说要使用 mvn jetty,它工作得很好,但为了将其放入容器中,我不想包含构建步骤(maven)。

相反,我想要一种编译战争的方法,这样我就可以将战争复制到容器中并从那里执行它。

我尝试了很多尝试,让战争在没有 Maven 码头的情况下运行,但没有一个成功。

  1. java -jar /path/to/jar 无主清单属性错误。没有主类,它扩展了一个 HttpServlet

  2. 使用jetty-runner 当我通过命令行与jetty-runner启动战争时,我没有收到任何错误,但它启动到一个显示文件目录的页面,而不是实际的项目。

  3. 制作一个“uber-jar”来打包所有与 1 相同的问题,得到一个没有主要清单的问题。

如果有帮助的话我可以包含更多代码(pom 文件等),但如果不需要的话我不想添加太多。我对java项目的打包和部署方式非常不熟悉,所以我很难弄清楚需要做什么。

谢谢!


汪汪一只猫
浏览 101回答 1
1回答

牛魔王的故事

Dockerfile与您的 webapp / war 文件一起使用的最低限度是......FROM jetty:9.4.18ADD ROOT.war /var/lib/jetty/webapps/这使用https://hub.docker.com/_/jetty上的官方 jetty docker 镜像管理于https://github.com/eclipse/jetty.docker这个名字ROOT.war很特殊,将会把你的 webapp 部署在“root”上下文路径中"/"塑造形象如果你像这样构建它......$ docker build -t stackoverflow/jetty:latest .运行图像交互式(这样你就可以记录日志)$ docker run --interactive --tty --rm --publish 80:8080 stackoverflow/jetty:latest作为守护进程$ docker run --detach --publish 80:8080 stackoverflow/jetty:latest该服务器将在您运行命令的计算机的端口 80 上可用docker run。配置 Jetty 基地如果您需要配置 jetty 映像,您可以使用任何标准start.jar命令。例子:FROM jetty:9.4.18WORKDIR $JETTY_BASERUN java -jar $JETTY_HOME/start.jar --add-to-start=jspADD ROOT.war /var/lib/jetty/webapps/没有 Maven 时如何工作详情请参阅官方图片...https://github.com/eclipse/jetty.docker/blob/master/9.4-jdk11/Dockerfile关键命令是...WORKDIR $JETTY_BASEENTRYPOINT ["/docker-entrypoint.sh"]CMD ["java","-jar","/usr/local/jetty/start.jar"]
随时随地看视频慕课网APP

相关分类

Java
我要回答