运行 war 从没有 maven jetty 的命令行
running war from command line without maven jetty
我正在尝试将一个开源软件 ware 放入 docker 容器 (https://github.com/att/XACML),但在这个容器中我无法使用 maven。 运行 此服务的文档说使用 mvn jetty,它确实工作正常,但为了将其放入容器中,我不想包含构建步骤 (maven)。
相反,我想要一种编译 war 的方法,这样我就可以只将 war 复制到容器中并从那里执行它。
我已经尝试了很多次尝试在没有 maven jetty 的情况下获得 war 运行,但是 none 成功了。
java-罐子/path/to/jar
没有主要清单属性错误。没有mainclass,它扩展了一个HttpServlet
使用 jetty-runner
当我通过命令行使用 jetty-runner 启动 war 时,我没有收到任何错误,但它会启动到一个显示文件目录的页面,而不是实际项目。
制作一个'uber-jar'来打包所有deps
与 1 相同的问题,得到一个没有主要清单的问题。
如果有帮助,我可以包含更多代码(pom 文件等),但如果不需要,我不想添加太多。我非常不熟悉 java 项目是如何打包和部署的,所以我很难弄清楚需要做什么。
谢谢!
最小 Dockerfile
使用您的 webapp / war 文件是 ...
FROM jetty:9.4.18
ADD ROOT.war /var/lib/jetty/webapps/
这使用官方码头 docker 图片位于
https://hub.docker.com/_/jetty
管理于
https://github.com/eclipse/jetty.docker
The name ROOT.war
is special, and will deploy your webapp in the "root" context path of "/"
构建图像
如果你这样构建它...
$ docker build -t Whosebug/jetty:latest .
运行 图片
交互式(这样您就可以记录日志)
$ docker run --interactive --tty --rm --publish 80:8080 Whosebug/jetty:latest
作为守护进程
$ docker run --detach --publish 80:8080 Whosebug/jetty:latest
服务器将在您 运行 docker run
命令所在机器的端口 80 上可用。
配置码头基地
如果您需要配置码头图像,您可以使用任何标准 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 的情况下工作
查看官方图片详情...
https://github.com/eclipse/jetty.docker/blob/master/9.4-jdk11/Dockerfile
关键命令是...
WORKDIR $JETTY_BASE
ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ["java","-jar","/usr/local/jetty/start.jar"]
我正在尝试将一个开源软件 ware 放入 docker 容器 (https://github.com/att/XACML),但在这个容器中我无法使用 maven。 运行 此服务的文档说使用 mvn jetty,它确实工作正常,但为了将其放入容器中,我不想包含构建步骤 (maven)。
相反,我想要一种编译 war 的方法,这样我就可以只将 war 复制到容器中并从那里执行它。
我已经尝试了很多次尝试在没有 maven jetty 的情况下获得 war 运行,但是 none 成功了。
java-罐子/path/to/jar 没有主要清单属性错误。没有mainclass,它扩展了一个HttpServlet
使用 jetty-runner 当我通过命令行使用 jetty-runner 启动 war 时,我没有收到任何错误,但它会启动到一个显示文件目录的页面,而不是实际项目。
制作一个'uber-jar'来打包所有deps 与 1 相同的问题,得到一个没有主要清单的问题。
如果有帮助,我可以包含更多代码(pom 文件等),但如果不需要,我不想添加太多。我非常不熟悉 java 项目是如何打包和部署的,所以我很难弄清楚需要做什么。
谢谢!
最小 Dockerfile
使用您的 webapp / war 文件是 ...
FROM jetty:9.4.18
ADD ROOT.war /var/lib/jetty/webapps/
这使用官方码头 docker 图片位于
https://hub.docker.com/_/jetty
管理于
https://github.com/eclipse/jetty.docker
The name
ROOT.war
is special, and will deploy your webapp in the "root" context path of"/"
构建图像
如果你这样构建它...
$ docker build -t Whosebug/jetty:latest .
运行 图片
交互式(这样您就可以记录日志)
$ docker run --interactive --tty --rm --publish 80:8080 Whosebug/jetty:latest
作为守护进程
$ docker run --detach --publish 80:8080 Whosebug/jetty:latest
服务器将在您 运行 docker run
命令所在机器的端口 80 上可用。
配置码头基地
如果您需要配置码头图像,您可以使用任何标准 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 的情况下工作
查看官方图片详情...
https://github.com/eclipse/jetty.docker/blob/master/9.4-jdk11/Dockerfile
关键命令是...
WORKDIR $JETTY_BASE
ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ["java","-jar","/usr/local/jetty/start.jar"]