我当前正在使用Dockerfile创建Tomcat 6.0.44。看起来像这样:
FROM tomcat:6.0.44-jre7 ... ADD catalina.sh /usr/local/tomcat/bin
从Dockerfile构建映像很好,但是当我运行它时,出现以下错误:
exec: "catalina.sh": executable file not found in $PATH.
关于如何解决这个问题的任何想法?
我想做的是传递此参数-DentityExpansionLimit=100000。有没有比在其中更简单的方法catalina.sh呢?
-DentityExpansionLimit=100000
catalina.sh
任何帮助/建议将不胜感激。
编辑:我正在EC2上运行Redhat实例,并使用Docker扩展了tomcat 6图像。
我不知道您是否已经找到解决方案,但这是我的建议。如果我对您的理解正确,则希望为Web应用程序设置Java VM选项。另外,您尝试使用自己的版本更改catalina.sh脚本,以便在运行Web应用程序时它包含附加的Java VM选项。
我认为您不必自己更改图像catalina.sh。脚本catalina.sh查看环境变量。您可以将环境变量CATALINA_OPTS设置为包含此设置。(还有一个环境变量JAVA_OPTS,但是当您还希望将这些Java选项应用于某些其他Tomcat本地进程(例如,根据tomcat文档的stop进程和版本)时,应使用该变量。)
Tomcat的最新版本(9)catalina.sh明确指出:
Do not set the variables in this script. Instead put them into a script setenv.sh in CATALINA_BASE/bin to keep your customizations separate.
因此,您可以选择以下两个选项之一:
使用Tomcat的标准Docker映像,仅添加您的Web应用程序,而不添加自定义的catalina.sh。运行此映像的容器时,请将CATALINA_OPTS环境变量设置为的值-DentityExpansionLimit=100000。
制作一个setenv.sh设置CATALINA_OPTS变量的脚本。还要将此脚本添加到构建文件中。版本6 catalina.sh在CATALINA_HOME和CATALINA_BASE文件夹中查找此脚本,并在存在的情况下执行该脚本。这样的事情(我没有测试)。
setenv.sh
#!/bin/sh echo "Setting JVM option Entity Expansion limit for application" export CATALINA_OPTS="-DentityExpansionLimit=100000"
选项2的优点是,您可以将正确的默认JVM选项强制放入映像中,而不是依靠运行映像的人员正确设置环境变量。
那有意义吗?