gpt4 book ai didi

tomcat - 使用来自 Docker 的 tomcat 图像时具有自定义 catalina.sh

转载 作者:行者123 更新时间:2023-11-28 22:07:57 25 4
gpt4 key购买 nike

我目前正在使用 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 更简单的方法?

如有任何帮助/建议,我们将不胜感激。

编辑:我在 EC2 上运行 Redhat 实例,并使用 Docker 扩展 tomcat 6 镜像。

最佳答案

我不知道您是否已经找到解决方案,但这是我的建议。如果我没理解错的话,您会想要为您的 webapp 设置一个 Java VM 选项。此外,您尝试使用您自己的版本更改 catalina.sh 脚本,以便它在运行您的 web 应用程序时包含一个额外的 Java VM 选项。

我认为您不必使用自己的 catalina.sh 更改图像。脚本 catalina.sh 查看环境变量。您可以设置环境变量 CATALINA_OPTS 以包含此设置。 (还有一个环境变量 JAVA_OPTS,但当您还想将这些 java 选项应用于其他一些 Tomcat native 进程(例如根据 tomcat 文档的停止进程和版本)时,应该使用它。)

较新版本的 Tomcat (9) catalina.sh 明确指出:

不要在此脚本中设置变量。而是将它们放入 CATALINA_BASE/bin 中的脚本 setenv.sh 中,以保持您的自定义独立。

因此,您可以选择以下两个选项之一:

  1. 使用 Tomcat 的标准 Docker 镜像并仅添加您的 webapp 而不是您的自定义 catalina.sh。运行此图像的容器时,将 CATALINA_OPTS 环境变量设置为 -DentityExpansionLimit=100000 的值。

  2. 创建一个设置 CATALINA_OPTS 变量的 setenv.sh 脚本。还将构建文件中的此脚本添加到图像中。版本 6 catalina.sh 在 CATALINA_HOME 和 CATALINA_BASE 文件夹中查找此脚本,如果存在则执行它。像这样(我没有测试)。

    #!/bin/sh  
    echo "Setting JVM option Entity Expansion limit for application"
    export CATALINA_OPTS="-DentityExpansionLimit=100000"

选项 2 的优点是您可以将正确的默认 JVM 选项强制添加到镜像中,而不是依赖运行镜像的人来正确设置环境变量。

这有意义吗?

关于tomcat - 使用来自 Docker 的 tomcat 图像时具有自定义 catalina.sh,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32603059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com