【问题标题】:Having a custom catalina.sh when using a tomcat image from Docker使用来自 Docker 的 tomcat 映像时具有自定义 catalina.sh
【发布时间】:2015-12-12 17:06:49
【问题描述】:

我目前正在使用 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 映像。

【问题讨论】:

  • 是 catalina.sh 还是 catalins.sh?我猜你的 Dockerfile 中有错字
  • 是catalina.sh,我在帖子里打错了
  • 看起来这可能适合您的账单:stackoverflow.com/a/27615958/3503302
  • 你解决了吗?

标签: tomcat docker tomcat6 catalina


【解决方案1】:

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

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

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.

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

  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 选项强制到映像中,而不是依靠运行映像的人员来正确设置环境变量。

这有意义吗?

【讨论】:

    【解决方案2】:

    当您将其中的 shell 脚本复制到 docker 容器中但忘记在脚本上设置可执行位时,通常会出现这种情况。

    确保在您的主机上执行chmod +x catalina.sh,然后执行docker build。

    另外,我通常更喜欢在运行时使用卷覆盖这些文件。但这又取决于您的方法。原因是明天如果出现新版本的图像,那么您不需要重建您的 dockerfiles。但前提是你可以使用官方图片

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-19
      • 1970-01-01
      • 2022-08-02
      • 2019-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-06
      相关资源
      最近更新 更多