我们有一个遗留应用程序,我正在尝试对其进行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
这里可能是什么问题?
最佳答案
如果activemq
是bin
目录中的可执行文件(而不是PATH中的可执行文件),那么您需要编辑CMD
:
CMD ["/bin/sh", "-c", "./activemq"]
还要确保您的脚本是可执行的。