You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

alpine:3.8环境构建Docker镜像时下载jdk-8u301-linux-x64.tar.gz失败求助

问题根因

你下载得到的4KB tar包并非有效的JDK安装文件,本质是Oracle官方早已取消了JDK历史版本的匿名下载权限,原有携带oraclelicense=accept-securebackup-cookie的请求方式已经无法通过官方校验,返回的实际是权限拒绝的网页内容,因此解压失败。你之前调整glibc版本没有效果,是因为故障出现在下载环节,还未到JDK运行的glibc兼容阶段。

可行解决方案

  • 方案一:切换使用OpenJDK 8(兼容绝大多数业务场景,无授权风险,适配alpine:3.8基础镜像)
    可直接修改Dockerfile,删除原有glibc安装、JDK下载相关的命令,替换为alpine源内的OpenJDK安装逻辑,修改后的参考代码如下:

    FROM alpine:3.8
    RUN apk upgrade --update && \
        apk add --update openjdk8 ca-certificates bash && \
        mkdir -p /opt/springboot/apps/ && \
        echo "export LANG=C.UTF-8" > /etc/profile.d/locale.sh
    
  • 方案二:业务强制要求使用Oracle JDK 8u201的场景
    先通过Oracle官方账号手动下载合规的jdk-8u201-linux-x64.tar.gz安装包,放置到Docker构建上下文目录中,将原有的curl下载逻辑替换为本地COPY指令,规避官方下载限制:

    FROM alpine:3.8
    # 把本地准备好的JDK包复制到镜像内
    COPY jdk-8u201-linux-x64.tar.gz /tmp/java.tar.gz
    RUN apk upgrade --update && \
        apk add --update curl ca-certificates bash && \
        for pkg in glibc-2.23-r1 glibc-bin-2.23-r1 glibc-i18n-2.23-r1; do curl -sSL https://github.com/andyshinn/alpine-pkg-glibc/releases/download/2.23-r1/${pkg}.apk -o /tmp/${pkg}.apk; done && \
        apk add --allow-untrusted /tmp/*.apk && \
        rm -v /tmp/*.apk && \
        mkdir -p /opt/springboot/apps/ && \
        ( /usr/glibc-compat/bin/localedef --force --inputfile POSIX --charmap UTF-8 C.UTF-8 || true ) && \
        echo "export LANG=C.UTF-8" > /etc/profile.d/locale.sh && \
        /usr/glibc-compat/sbin/ldconfig /lib /usr/glibc-compat/lib && \
        gunzip /tmp/java.tar.gz
    
  • 方案三:需要自动化构建的场景
    把手动下载好的JDK安装包上传到企业内部的私有制品库、对象存储或内部文件服务器中,将Dockerfile中的下载地址替换为内部可访问的地址即可,无需再携带Oracle相关的Cookie参数,同时可提升下载速度、避免外部网络波动影响。

内容的提问来源于stack exchange,提问作者mansing shinde

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 17:48:00