Alpine制作JDK8镜像的坑

本文介绍了解决Alpine Linux环境下JDK8无法运行的问题。由于Alpine使用MUSL libc而非glibc,导致Java应用程序无法直接执行。文中提供了一个Dockerfile示例,详细展示了如何通过安装glibc来解决此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用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

 

至于如何安装,可以参考:

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

Dockerfile

FROM alpine:latest
ADD jdk1.8.0_101.tar.gz /usr/local

******************更换Alpine源为mirrors.ustc.edu.cn******************
RUN echo http://mirrors.ustc.edu.cn/alpine/v3.7/main > /etc/apk/repositories && \
    echo http://mirrors.ustc.edu.cn/alpine/v3.7/community >> /etc/apk/repositories
RUN apk update && apk upgrade


******************Alpine安装 Glibc https://github.com/sgerrand/alpine-pkg-glibc *****************
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.27-r0/glibc-2.27-r0.apk && \
    apk add glibc-2.27-r0.apk


******************设置JAVA变量环境******************
ENV JAVA_HOME=/usr/local/jdk1.8.0_101
ENV CLASSPATH=$JAVA_HOME/bin
ENV PATH=.:$JAVA_HOME/bin:$PATH
CMD ["java","-version"]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值