弹簧代理:错误打开zip文件或JAR清单丢失

我正在尝试使用Docker运行应用程序。 应用程序是在Tomcat上运行的Java程序。 所以,我正在构build一个图像,我的Dockerfile如下所示:

 FROM tomcat:7.0.72-jre8 COPY Tomcat/ $CATALINA_HOME/ ENV JAVA_OPTS="$JAVA_OPTS -javaagent:$CATALINE_HOME/lib/spring-agent-2.5.6.jar -Xms2048m -Xmx2048m -Dorg.apache.el.parser.SKIP_IDENTIFIER_CHECK=true" 

如您所见,我正在使用-javaagent选项,但它会导致:

 Error opening zip file or JAR manifest missing : /lib/spring-agent-2.5.6.jar Error occurred during initialization of VM agent library failed to init: instrument 

我已经通过在setenv.sh设置JAVA_OPTS来尝试相同的例外 – 同样的例外。 我确信lib被复制到容器,并且存在于指定的path上。 我通过运行没有javaagent选项的相同图像检查它,然后在terminal访问它。 spring-agent在lib文件夹中,所以我有点卡住了。

我是新的Ubuntu用户,我想可能有任何权限问题等

有什么build议么?

正确的方法是让Docker构buildjar文件,而不是传递以前创build的jar文件。 我这样做: https : //github.com/glapp/mape/blob/master/Dockerfile

这可能对您的Spring应用程序有帮助: https : //spring.io/guides/gs/spring-boot-docker/

那么问题出在$CATALINA_HOME上,因为当调用javaagent选项时,这个variables已经被忽略了,所以我find了临时解决scheme来指定/usr/local/tomcat/而不是$CATALINA_HOME

非常意外,因为在我将文件复制到$CATALINA_HOME ,它的工作原理。

我仍然不会检查这个答案是正确的,因为它看起来不是很好的解决scheme。 任何想法仍然赞赏。