Docker Alpine + Oracle Java:找不到Java

我一直在尝试使用Oracle Java(而非openjdk)创建基于高山的docker映像。我被特别要求在这里创建我们自己的图像。

这是我想出的Dockerfile:

FROM alpine:3.6

RUN apk add --no-cache curl wget

RUN mkdir /opt/ && \

wget -c --header "Cookie: oraclelicense=accept-securebackup-cookie"\

http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz && \

tar xvf jdk-8u131-linux-x64.tar.gz -C /opt/ && \

rm jdk-8u131-linux-x64.tar.gz && \

ln -s /opt/jdk1.8.0_131 /opt/jdk

ENV JAVA_HOME /opt/jdk

ENV PATH $PATH:/opt/jdk/bin

RUN echo $JAVA_HOME && \

echo $PATH

RUN which java

RUN java -version

有一些不必要的命令(如呼应JAVA_HOME目录),它被添加到帮助调试,但现在我卡住:RUN which

java回报/opt/jdk/bin/java不如预期,但RUN java -version回报率/bin/sh: java: not

found

我尝试了几件事,包括将可执行文件符号链接到/ usr / bin,但无济于事。

我想念什么?

编辑:码头工人的最终输出是: The command '/bin/sh -c java -version' returned a non-zero

code: 127

最终编辑:

感谢diginoise将我介绍给MUSL vs libc。我发现将以下内容添加到我的Dockerfile中使我可以构建工作映像:

RUN apk --no-cache add ca-certificates && \

wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://raw.githubusercontent.com/sgerrand/alpine-pkg-glibc/master/sgerrand.rsa.pub && \

wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.25-r0/glibc-2.25-r0.apk && \

apk add glibc-2.25-r0.apk

发现于:https :

//github.com/sgerrand/alpine-pkg-glibc

回答:

您无法实现自己想要的。

Alpine Linux使用MUSL作为标准C库。

Oracle的Java for Linux依赖于GNU Standard C库(gclib)。

有理论上的方法,但是没有您想的那么简单。

看到这个链接

您可以在此处和此处找到运行OracleJDK的Alpine映像的示例。这两个示例都添加了缺少的GNU C库。

这是Oracle关于该主题的更多详细信息和官方立场。

JDK源代码尚未移植到Alpine Linux,或更具体地说是musl C库。也就是说,事实证明,与JDK源代码观点相去甚远的Alpine

Linux就是C库。

简而言之,

以上是 Docker Alpine + Oracle Java:找不到Java 的全部内容, 来源链接: utcz.com/qa/422764.html

回到顶部