当前位置: 首页 > 知识库问答 >
问题:

使用Docker的tomcat映像时具有自定义catalina.sh

江英华
2023-03-14

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

共有2个答案

师谦
2023-03-14

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

在主机上,确保执行chmod x catalina。sh,然后执行docker构建。

此外,我通常更喜欢在运行时使用卷覆盖这些文件。但这同样取决于你的方法。原因是,如果明天出现新版本的image,则不需要重建dockerfiles。但只有在你能使用官方图片的情况下

洪弘壮
2023-03-14

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

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

Tomcat(9)catalina的最新版本。sh明确指出:

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

因此,您可以从两个选项中选择一个:

>

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

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

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

这有意义吗?

 类似资料:
  • VM create失败,原因是ISOSDISK错误:MSRESTAZURE.AZURE_Exceptions.CloudError:不允许更改属性'osDisk.Image.URI'。 如果有帮助,则是将事务发送到Azure: URL:hps://management.azure.com/subscriptions/b97ddb69-f825-48b4-9e19-48eb3b4c8267/reso

  • 我有这样一个类,它只是发送一个http post请求: 我有这个文件,它为它构建我的jar和java运行时映像,并使用这个自定义运行时映像来运行我的jar:

  • 我正在使用Postgres Docker的官方图片来定制它的配置。为此,我使用命令来更改,例如: 我尝试了两种方法来应用此配置。第一种方法是将命令添加到脚本中,并将其复制到init文件夹“/docker entrypoint initdb.d”中。第二种方法是使用“RUN”命令直接在Dockerfile中运行它们(该方法适用于非官方Postgresql映像,该映像具有指向配置文件“/etc/pos

  • 问题内容: 我正在使用官方的Postgres Docker映像 尝试自定义其配置。为此,我使用命令来更改例如: 我尝试了两种方法来应用此配置。第一种是通过将命令添加到脚本并将其复制到init文件夹“ /docker-entrypoint- initdb.d”中。第二种方法是通过使用“ RUN”命令直接在我的Dockerfile中运行它们(此方法在非官方的Postgresql映像(与配置文件“ /

  • 问题内容: 我正在努力让Kubernetes与我的私有hub.docker.com注册表映像一起使用。 我正在使用kubectl版本: 和Mac OS X上的Vagrant 我按照此处给出的说明进行操作:https : //github.com/kubernetes/kubernetes/blob/release-1.1/docs/user- guide/images.md#pre-pulling

  • 简介 Xiaomi Cloud-ML支持Bring Your Own Image功能,允许用户传入自定义的Docker镜像来启动训练任务,可以解决训练任务依赖非Python库的问题。 注意,用户提供的镜像地址应该是公开可访问的,如果在DockerHub中下载镜像和启动任务时间较长。 制作Docker镜像 Cloud-ML的镜像中包含了平台通用的python,nvidia cuda,FDS FUSE