Java 在没有maven jetty的情况下从命令行运行战争
我试图将一个开源软件放在docker容器()中,但是在这个容器中我不能使用maven。运行此服务的文档中说要使用mvn jetty,它确实可以很好地工作,但是为了在容器中实现这一点,我不想包含构建步骤(maven) 相反,我想要一种编译war的方法,这样我就可以将war复制到容器中并从那里执行它 我已经尝试了很多尝试,试图让战争在没有maven jetty的情况下进行,但都没有成功Java 在没有maven jetty的情况下从命令行运行战争,java,maven,jetty,Java,Maven,Jetty,我试图将一个开源软件放在docker容器()中,但是在这个容器中我不能使用maven。运行此服务的文档中说要使用mvn jetty,它确实可以很好地工作,但是为了在容器中实现这一点,我不想包含构建步骤(maven) 相反,我想要一种编译war的方法,这样我就可以将war复制到容器中并从那里执行它 我已经尝试了很多尝试,试图让战争在没有maven jetty的情况下进行,但都没有成功 java-jar/path/to/jar 没有主清单属性错误。没有主类,它扩展了一个HttpServlet 使用码
谢谢 Minimal
Dockerfile
使用您的webapp/war文件是
FROM jetty:9.4.18
ADD ROOT.war /var/lib/jetty/webapps/
这使用了位于的jetty docker官方图像 管理于
名称
ROOT.war
是特殊的,它将在“/”的“ROOT”上下文路径中部署您的webapp
建筑形象
如果你像这样建造它
$docker build-t stackoverflow/jetty:最新版本。
运行图像
以交互方式(因此您可以查看日志)
$docker run--interactive--tty--rm--publish 80:8080 stackoverflow/jetty:最新版本
作为守护进程
$ docker run --detach --publish 80:8080 stackoverflow/jetty:latest
服务器将在运行docker run
命令的机器的端口80上可用
配置码头基地
如果需要配置jetty映像,可以使用任何标准的start.jar
命令
例如:
FROM jetty:9.4.18
WORKDIR $JETTY_BASE
RUN java -jar $JETTY_HOME/start.jar --add-to-start=jsp
ADD ROOT.war /var/lib/jetty/webapps/
没有Maven,这是如何工作的
查看官方图片详细信息
关键命令是
WORKDIR $JETTY_BASE
ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ["java","-jar","/usr/local/jetty/start.jar"]
谢谢,但我得到的问题,似乎是特定的战争,没有出现时,运行与maven。maven对战争的包装有什么不同吗?