仅在特定计算机的docker容器上接收运行时错误

46scxncf  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(241)

我有一个运行在apachetomcat中的第三方javawebapp。我们正在使用docker运行此应用程序。在我的机器上运行时,我们收到一个错误
我想强调的是,我们不建造这个 .war . 我们不拥有这个 .war . 我们只是尝试运行一个docker容器来运行这个已经构建的代码。 javax.servlet.ServletException: Servlet execution threw an exception org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 有细节吗 java.lang.IncompatibleClassChangeError: Class javax.ws.rs.core.Response$Status does not implement the requested interface javax.ws.rs.core.Response$StatusType 在网上调查这一点,可以发现很多人对互相冲突的新泽西jar有意见。我们不应该有这个问题,因为我们使用mac的docker。。。这可以在其他人的机器上跨多个版本的docker工作。
我已经删除并重新安装docker多次,重新启动我的机器之间的每次重新启动。我使用了与机器相同的版本。
我在osx sierra 10.12.2上
docker映像基于 tomcat:8.5.9-jre8-alpine 它复制了相关的 .war$CATALINA_HOME/webapps/ 还有一个log4j .jar$CATALINA_HOME/lib/ 还有两个.properties文件
这台机器上有什么东西可能会干扰集装箱吗?
dockerfile如下

FROM tomcat:8.5.9-jre8-alpine@sha256:780c0fc47cf5e212bfa79a379395444a36bbd67f0f3cd9d649b90a74a1a7be20

ENV JAVA_OPTS="-Xms2048m -Xmx2048m"

WORKDIR $CATALINA_HOME

COPY ./target/lib/* $CATALINA_HOME/lib/
COPY ./target/<appname>.war $CATALINA_HOME/webapps/

EXPOSE 8080
CMD ["catalina.sh", "run"]
mv1qrgav

mv1qrgav1#

检查所有卷,在这种情况下最关键的卷是从~/.m2装入容器~/.m2。。这可以解释你的问题。
除此之外,它在一台机器上工作,而不是在另一台机器上工作是没有意义的,只要您使用相同的图像和:
a) war文件的编译不会发生在probelitimac计算机上(很可能是maven/m2本地版本)
b) 你没有做任何疯狂的事情在入口点真的伤害范式(我不这么认为)
c) 您将本地m2装入容器m2中,从而共享LIB
我们确实用不同的war应用程序运行了很多tomcat容器,正如您所料,它们完全跨平台运行。
提示:为了避免错误,请始终使用imagejavaenv在映像中构建。

相关问题