我正在尝试使用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用户,我猜可能存在任何权限问题等。
有什么建议吗?
答案 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
之前的步骤一样,它可以正常工作。
我仍然不会将此答案视为正确,因为它看起来不是一个好的解决方案。任何想法仍然赞赏。