【问题标题】:Issue with copy JRE into docker and run java command将 JRE 复制到 docker 并运行 java 命令时出现问题
【发布时间】:2020-01-14 09:02:56
【问题描述】:

我正在将 JRE 目录的工作版本复制到 docker 并尝试运行 /JRE/bin/java。 但它会抛出 ash: java not found 错误。我在 linux VM 中做同样的事情。只需复制 JRE 文件夹并执行在 VM 中运行良好的 java 命令。我不想从任何地方下载 JRE。 想要捆绑这个特定的 JRE。如何解决这个问题。

我进入 shell 控制台并导航到 JRE/bin/ 目录并执行“java”。即使那样它也失败了。错误是相同的 ash: java not found 错误。

Dockerfile:

FROM alpine:latest

ENV HOME=/root \
        DEBIAN_FRONTEND=noninteractive \
        LANG=en_US.UTF-8 \
        LANGUAGE=en_US.UTF-8 \
        LC_ALL=C.UTF-8 \
        DISPLAY=:0.0 \
        DISPLAY_WIDTH=1024 \
        DISPLAY_HEIGHT=768

RUN apk --update --upgrade add \
        bash \
        fluxbox \
        x11vnc \
        xterm \
        xvfb

COPY MyJavaApp MyJavaApp/
WORKDIR /MyJavaApp
ENV PATH="./JRE/bin:${PATH}"

【问题讨论】:

  • 为什么不使用 JRE docker 镜像来构建应用程序?如果你需要一个样本,那么你可以使用我在下面链接中的 docker 文件github.com/naveenkulkarni029/products-api/blob/master/…
  • “只需复制 JRE 文件夹并执行在 VM 中可以正常工作的 java 命令” - 告诉我在运行 Java 的 VM 中已经可以正常工作而无需复制任何内容。
  • 请分享 Dockerfile 以了解 ENV 设置
  • 您显示的 Dockerfile 中没有任何内容安装 Java,并且您没有使用包含它的基本映像(alpine 非常少)。您是否希望运行 java 可以工作,如果可以,为什么?
  • 我没有安装 java ..只是复制 JRE 文件夹并从 bin 文件夹中调用“java” ..它适用于 Linux 机器。我期待这个 alpine 也一样

标签: java docker dockerfile containers javac


【解决方案1】:

您何时将 JRE 目录复制到 docker?即 Docker 构建时间或启动 Docker 容器之后?

看起来您正在正确地将本地 Java 目录复制到映像,但是当前位置无法访问 java 二进制文件,因此,请确保设置 PATH。应该是这样的,

RUN export PATH=/JRE/bin:${PATH}

或者将路径传递给 Dockerfile 中的 ENV,

ENV PATH="/JRE/bin:${PATH}"

【讨论】:

  • 谢谢阿努拉达。但即使在这之后它也失败了。错误是“ash: java not found”
  • 我进入 shell 控制台并导航到 JRE/bin/ 目录并执行“java”。即使这样它也失败了。错误是一样的。请告诉我如何解决。
  • 你能快速检查一下那里的java文件的权限级别吗?
  • "-rwxr-xr-x 1 root root" 是特权
  • 您是否使用 alpine 图像作为基础?我们可以看看你的 Dockerfile 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-16
  • 1970-01-01
  • 2022-01-12
  • 2011-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多