alpine_jdk:1.8
jdk8_基于安装包
用Alpine跑了JDK8的镜像结果发现,JDK还是无法执行.后来翻阅文档才发现
Java是基于GUN Standard C library(glibc)
Alpine是基于MUSL libc(mini libc)
所以Alpine需要安装glibc的库,以下是官方给出wiki
https://wiki.alpinelinux.org/wiki/Running_glibc_programs
#下载包,解压
tar -zxvf jdk-8u231-linux-x64.tar.gz
#进入目录
cd jdk1.8.0_231
#删除文本文件
rm -rf COPYRIGHT LICENSE README release THIRDPARTYLICENSEREADME-JAVAFX.txt THIRDPARTYLICENSEREADME.txt Welcome.html
#删除其他无用文件
rm -rf lib/plugin.jar \
lib/ext/jfxrt.jar \
bin/javaws \
lib/javaws.jar \
lib/desktop \
plugin \
lib/deploy* \
lib/*javafx* \
lib/*jfx* \
lib/amd64/libdecora_sse.so \
lib/amd64/libprism_*.so \
lib/amd64/libfxplugins.so \
lib/amd64/libglass.so \
lib/amd64/libgstreamer-lite.so \
lib/amd64/libjavafx*.so \
lib/amd64/libjfx*.so
#重新打包
tar zcvf jdk1.8.0_231.tar.gz jdk1.8.0_231
#下载glibc-2.30-r0.apk
https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.30-r0/glibc-2.30-r0.apk
#下载 sgerrand.rsa.pub
https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub
编写 dockerfile文件
vi Dockerfile
FROM alpine:latest
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories
RUN apk update \
&& apk add tzdata \
&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone
COPY glibc-2.33-r0.apk /opt/
COPY sgerrand.rsa.pub /etc/apk/keys/
RUN ls -l /opt
RUN apk add /opt/glibc-2.33-r0.apk && rm -rf /opt/glibc-2.33-r0.apk
#ADD 命令会自动解压缩
ADD jdk-8u261-linux-x64.tar.gz /usr/local
# 设置JAVA变量环境
ENV JAVA_HOME=/usr/local/jdk1.8.0_261
ENV CLASSPATH=$JAVA_HOME/bin
ENV PATH=.:$JAVA_HOME/bin:$PATH
CMD ["java","-version"]