【问题标题】:"Activemq not found" error after running custom Docker image运行自定义 Docker 映像后出现“找不到 Activemq”错误
【发布时间】:2020-06-02 04:54:05
【问题描述】:

我们有一个旧应用程序,我正在尝试对其进行 docker 化。应用程序的 jar 将应用程序和 activemq 捆绑在一起。 (我们不能改变它的构建方式)。并且有一定的安装步骤。我为此创建了以下初始 Dockerfile,但是在运行映像时遇到了一个问题(在 Dockerfile 之后提到)。

Dockerfile 看起来像这样:

FROM registry:4000/openjdk:8-jre-alpine

RUN addgroup -S appuser && adduser -S -G appuser appuser

ADD ./fe.jar /home/appuser

RUN chmod +x /home/appuser/fe.jar \
&& chown appuser:appuser /home/appuser/fe.jar

USER appuser

RUN ["java", "-jar", "/home/appuser/fe.jar", "-i"]

WORKDIR /home/appuser/fe/activemq/bin

CMD ["/bin/sh", "-c", "activemq"]

RUN 命令将应用程序和该位置的 activemq 提取到名为 fe 的文件夹中。

WORKDIR 似乎将工作直接设置为 activemq/bin。我通过使用图像运行时触发的 sh 脚本确认了这一点。在 sh 脚本中,我触发 ls 和 pwd 命令来查看内容和位置。

但是,当我运行触发 CMD 命令的图像时,我收到以下错误:

/bin/sh: activemq: not found

这可能是什么问题?

【问题讨论】:

    标签: java docker dockerfile


    【解决方案1】:

    如果activemq 是您的bin 目录(而不是PATH)中的可执行文件,那么您需要编辑您的CMD

    CMD ["/bin/sh", "-c", "./activemq"]
    

    还要确保您的脚本是可执行的。

    【讨论】:

    • 添加/更新了以下行,但是没有用。:WORKDIR /home/appuser/fe/activemq/bin RUN chmod +x -R。 CMD ["/bin/sh", "-c", "./activemq"]
    【解决方案2】:

    发现问题。 activemq 脚本以 #!/bin/bash 开头,我正在尝试使用 sh 运行它。我需要先在映像中安装 bash,然后使用一个来运行 activemq 脚本。 我从这个答案中得到了提示:docker alpine /bin/sh script.sh not found 现在它继续前进,但是容器在立即运行后死亡。不确定是什么问题。甚至没有给出任何错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-10
      • 2018-12-25
      • 2020-10-04
      • 2019-06-26
      • 1970-01-01
      • 1970-01-01
      • 2013-12-04
      • 2021-05-27
      相关资源
      最近更新 更多