Docker alpine + oracle java:找不到java

我一直在尝试用Oracle Java(而不是openjdk)创build一个基于阿尔派的docker镜像。 我被特意要求在这里创build自己的形象。

这是我提出的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目录),这些命令被添加来帮助debugging,但现在我卡住了: RUN which java返回/opt/jdk/bin/java预期,但RUN java -version返回/bin/sh: java: not found

我已经尝试了一些东西,包括将可执行文件符号链接到/ usr / bin中,无济于事。

我错过了什么?

编辑:docker的最终输出是: The command '/bin/sh -c java -version' returned a non-zero code: 127

最终编辑:

感谢diginoise把我放到MUSL与libc。 我发现添加以下内容到我的Dockerfile允许我build立一个工作映像:

 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-glibcfind

你不能达到你想要的。

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

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

有理论上的方法,但并不像你想象的那样微不足道。

看到这个链接

这里是关于这个话题的更详细的信息和Oracle的官方立场

总之使用官方的Oracle Java Docker镜像