我们有一个遗留应用程序,我正在尝试对其进行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
这里可能是什么问题?
答案 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 现在它前进了,但是容器立即运行后就死了。不知道是什么问题。甚至没有给出任何错误。