使用dockerfile成功安装java,但未找到其java命令

使用dockerfile成功安装java,但未找到其java命令,docker,Docker,这是我的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 --

这是我的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
当我使用
sudocker run-t-idockerfile
登录到容器中并键入java或javac时,它会工作。我可以看到它已成功安装,但当我运行它时,下面的文件显示“未找到java命令”

sudo docker run-t-i dockerfile

java命令未找到

您可能缺少java\u 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
ENTRYPOINT[“java”“-jar”,“/home/project/hello.jar”]


您在
“-jar”

之前忘记了一个逗号,
路径很可能与您预期的不同。尝试使用java的完全限定路径名。我可以看到它安装在容器卷下的/usr/bin/java中,但是当我使用绝对路径时,它仍然不起作用。尽管我想找到一种不使用绝对路径建议的方法:尝试使用正式的Java映像:@ManoMarks我们在这里进行了讨论:但是由于一些未知的原因,他的容器被证明配置错误。java映像是最好的方法,但仍然不起作用。我已将其设置为以下值,并验证这些值是否存在于以下指定的位置: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路径,而不是使用路径。我不知道,但这为我解决了问题。我没有使用任何Java映像。在未能使用java:8映像安装之后,我只使用上面列出的apt-get。我还安装了say mysql,我有一个相同的问题,那就是我不能在docker文件中指定mysql-h localhost-u abcd-pabcd,它说找不到mysql命令,但当我登录到图像并执行mysql时,它工作了,所以我不确定发生了什么事,你的眼睛很敏锐!这就解决了汉克斯,让我错过了逗号。
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