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


这里可能是什么问题?

最佳答案

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

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


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

10-06 09:42