带有Tomcat的Dockerfile:“exec:catalina.sh”没有这样的文件或目录

Liv*_*bot 0 java bash tomcat docker dockerfile

我正在尝试让我的 Web 应用程序在 Docker 上与 Tomcat 一起工作。但是,我在让它实际工作时遇到了一些麻烦。我对 Tomcat 和 Docker 都是全新的,不太知道我做错了什么。

我的 Dockerfile 看起来像:

FROM java:8-jre
#https://github.com/docker-library/tomcat

ENV CATALINA_HOME ~/Tomcat
ENV PATH $CATALINA_HOME/bin:$PATH

RUN mkdir -p "$CATALINA_HOME"
WORKDIR $CATALINA_HOME

# see https://www.apache.org/dist/tomcat/tomcat-8/KEYS
RUN gpg --keyserver pool.sks-keyservers.net --recv-keys \
    05AB33110949707C93A279E3D3EFE6B686867BA6 \
    07E48665A34DCAFAE522E5E6266191C37C037D42 \
    47309207D818FFD8DCD3F83F1931D684307A10A5 \
    541FBE7D8F78B25E055DDEE13C370389288584E7 \
    61B832AC2F1C5A90F0F9B00A1C506407564C17A3 \
    79F7026C690BAA50B92CD8B66A3AD3F4F22C4FED \
    9BA44C2621385CB966EBA586F72C284D731FABEE \
    A27677289986DB50844682F8ACB77FC2E86E29AC \
    A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 \
    DCFD35E0BF8CA7344752DE8B6FB21E8933C60243 \
    F3A04C595DB5B6A5F1ECA43E3B7BBB100D811BBE \
    F7DA48BB64BCB84ECBA7EE6935CD23C10D498E23

ENV TOMCAT_MAJOR 8
ENV TOMCAT_VERSION 8.0.38
ENV TOMCAT_TGZ_URL https://www.apache.org/dist/tomcat/tomcat-$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz

#RUN set -x \
#   && curl -fSL "$TOMCAT_TGZ_URL" -o tomcat.tar.gz \
#   && curl -fSL "$TOMCAT_TGZ_URL.asc" -o tomcat.tar.gz.asc \
#   && gpg --verify tomcat.tar.gz.asc \
#   && tar -xvf tomcat.tar.gz --strip-components=1 \
#   && rm bin/*.bat \
#   && rm tomcat.tar.gz*

#ENTRYPOINT ["$CATALINA_HOME/bin/./catalina.sh"]

#RUN chmod +x $CATALINA_HOME/bin

ADD ./target/*.war $CATALINA_HOME/webapps/

EXPOSE 8080
CMD ["catalina.sh", "run"]
Run Code Online (Sandbox Code Playgroud)

这主要来自https://www.distelli.com/docs/tutorials/build-and-deploy-tomcat-war-docker/

我遇到了一个问题

"exec: \"catalina.sh\": 在 $PATH 中找不到可执行文件"

因此,在进行了一些探索之后,我尝试通过运行使 catalina.sh 可执行

chmod +x $CATALINA_HOME/bin/"./catalina.sh"

但是后来它说找不到 $CATALINA_HOME/bin/"./catalina.sh"。因此,我尝试将其设为 ENTRYPOINT,但这没有用。

从终端我能够成功运行

chmod +x $CATALINA_HOME/bin/"./catalina.sh"

但这并没有解决问题。

我究竟做错了什么?任何和所有的帮助表示赞赏。

coo*_*oad 5

为什么不使用 tomcat 基础镜像?就像在https://hub.docker.com/_/tomcat/ 工作 DockerFile 中一样。

FROM tomcat:8.0-jre8 
COPY ./target/*.war $CATALINA_HOME/webapps
Run Code Online (Sandbox Code Playgroud)