Java &引用;“未找到Activemq”;运行自定义Docker映像后出错
我们有一个遗留应用程序,我正在尝试将其dockerize。应用程序的jar将应用程序和activemq捆绑在一起。(我们不能改变它的建造方式)。并有一定的安装步骤。我为此创建了以下初始Dockerfile,但是在运行映像时,我面临一个问题(在Dockerfile之后提到) Dockerfile如下所示:Java &引用;“未找到Activemq”;运行自定义Docker映像后出错,java,docker,dockerfile,Java,Docker,Dockerfile,我们有一个遗留应用程序,我正在尝试将其dockerize。应用程序的jar将应用程序和activemq捆绑在一起。(我们不能改变它的建造方式)。并有一定的安装步骤。我为此创建了以下初始Dockerfile,但是在运行映像时,我面临一个问题(在Dockerfile之后提到) Dockerfile如下所示: FROM registry:4000/openjdk:8-jre-alpine RUN addgroup -S appuser && adduser -S -G appuser
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
目录(而不是路径)中的可执行文件,那么您需要编辑CMD
:
CMD ["/bin/sh", "-c", "./activemq"]
还要确保脚本是可执行的。发现问题。activemq脚本以#开头/bin/bash,我正在尝试使用sh运行它。我需要首先在映像中安装bash,然后使用一个来运行activemq脚本。 我从这个答案中得到了暗示:
现在它向前移动,但容器在立即运行后死亡。不知道问题是什么。甚至没有给出任何错误。添加/更新了以下行,但这些行不起作用。:WORKDIR/home/appuser/fe/activemq/bin RUN chmod+x-R。CMD[“/bin/sh”、“-c”、“/activemq”]