【问题标题】:install java successfully using the dockerfile however its says java command not found使用 dockerfile 成功安装 java 但是它说找不到 java 命令
【发布时间】:2016-04-13 20:17:29
【问题描述】:

这是我的 docker 文件

RUN apt-get install -y --no-install-recommends software-properties-common
RUN add-apt-repository -y ppa:openjdk-r/ppa
RUN apt-get update
RUN apt-get install -y openjdk-8-jdk
RUN apt-get install -y openjdk-8-jre
RUN update-alternatives --config java
RUN update-alternatives --config javac

当我使用sudo docker run -t -i dockerfile 登录容器并输入 java 或 javac 时,它可以工作。我可以看到它已成功安装,但是当我使用下面的文件运行它时显示“找不到 java 命令”?

RUN apt-get install -y --no-install-recommends software-properties-common
RUN add-apt-repository -y ppa:openjdk-r/ppa
RUN apt-get update
RUN apt-get install -y openjdk-8-jdk
RUN apt-get install -y openjdk-8-jre
RUN update-alternatives --config java
RUN update-alternatives --config javac
ENTRYPOINT ["java" "-jar", "/home/project/hello.jar"]
CMD [""]

sudo docker run -t -i dockerfile java command not found?

【问题讨论】:

  • PATH 很有可能与您的预期不同。尝试使用 java 的完全限定路径名。
  • 我可以看到它安装在容器卷下的 /usr/bin/java 中,但是当我使用绝对路径时它仍然不起作用。虽然我想找到一种不使用绝对路径的方法
  • 建议:尝试使用官方Java镜像:hub.docker.com/_/java
  • @ManoMarks 我们在这里进行了讨论:stackoverflow.com/questions/36587850/… 但由于某种未知原因,他的容器结果配置错误。 java 图像是 IMO 的最佳方法

标签: docker


【解决方案1】:

ENTRYPOINT ["java" "-jar", "/home/project/hello.jar"]

您在"-jar" 之前忘记了一个逗号。

【讨论】:

  • 你的眼睛很敏锐!这解决了它
  • 谢谢,我想念逗号。
【解决方案2】:

您可能缺少 JAVA_HOME 和 PATH 声明。

ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64 #This can vary
ENV PATH $PATH:$JAVA_HOME/bin

And build the docker image with --no-cache option

【讨论】:

  • 还是不行。我已将其设置为以下内容,并验证它们存在于以下指定的位置 ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64 ENV PATH $PATH:$JAVA_HOME/bin
  • 你能在容器中找到java吗?也许路径不是你想的那样。
  • 正如我在之前的评论中所说,我能够验证 Java 在容器中的安装位置,并且看起来正确
  • 我实际上刚刚看到了一个与 alpine docker 镜像类似的问题,其中 java 被放入了/opt/jdk/。它找不到 java,我必须将 java 路径设置为 /usr/java/default/ 才能使图像正常工作。可能是程序将 java 路径硬编码为该路径,而不是使用 PATH。我不知道,但这为我解决了问题。
  • 我没有使用任何 Java 映像。在使用 java:8 映像安装失败后,我只是使用了上面列出的 apt-get。我还安装了 mysql 并且我有同样的问题,即我无法在 docker 文件中指定 mysql -h localhost -u abcd -pabcd 它说找不到 mysql 命令但是当我登录到图像并执行 mysql 时它可以正常工作我不确定发生了什么
猜你喜欢
  • 2022-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-04
  • 1970-01-01
  • 2021-06-22
  • 2020-06-08
  • 1970-01-01
相关资源
最近更新 更多