Spring-agent:打开zip文件或JAR清单丢失时出错

时间:2016-10-03 07:45:59

标签: java ubuntu docker

我正在尝试使用Docker运行应用程序。应用程序是在Tomcat上运行的Java程序。所以,我正在建立一个图像,我的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

我通过在JAVA_OPTS中设置setenv.sh来尝试相同的操作 - 相同的例外情况。我确信lib被复制到容器并且它存在于指定的路径上。我通过运行没有javaagent选项的相同图像来检查它,然后在终端中访问它。 spring-agent在lib文件夹中,所以我有点陷入困境。

我是新的Ubuntu用户,我猜可能存在任何权限问题等。

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

好吧,问题发生在$CATALINA_HOME,因为在调用javaagent选项时错过了该变量,因此我找到了临时解决方案来指定/usr/local/tomcat/而不是{{1}这样的路径}}

非常出乎意料,就像我将文件复制到$CATALINA_HOME之前的步骤一样,它可以正常工作。

我仍然不会将此答案视为正确,因为它看起来不是一个好的解决方案。任何想法仍然赞赏。