java - 运行自定义 Docker 镜像后出现 "Activemq not found"错误

标签 java docker dockerfile

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

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

关于java - 运行自定义 Docker 镜像后出现 "Activemq not found"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60276321/

相关文章:

networking - 网络和负载均衡器如何在 docker swarm 模式下工作?

docker - Golang 与 Gitlab 持续集成

docker - Dockerfile构建卷更改未反射(reflect)在已挂载的本地文件夹上吗? (OS X/boot2Docker)

docker - 在 docker 中生成自签名证书

Docker - 如何将新的 python 依赖项添加到现有的 docker 镜像?

java - 使用 lucene 的荧光笔和完整性的问题。

java - 请帮助我理解这个 codility 测试

java - 优雅地关闭在 Kubernetes 中运行的 Spring 应用程序

java - Java 中的 Traffic Junky API 用法和示例代码

java - 如何在 Swing 中组合组合框和树?