运行自定义Docker映像后出现“ Activemq未找到”错误

时间:2020-02-18 08:06:06

标签: java docker dockerfile

我们有一个遗留应用程序,我正在尝试对其进行dockerize。应用程序的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

这里可能是什么问题?

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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