我们有一个遗留应用程序,我正在尝试对其进行 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"]
还要确保您的脚本可执行。
关于java - 运行自定义 Docker 镜像后出现 "Activemq not found"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60276321/