首页 > 解决方案 > 如何在 Dockerfile 中使用 OTN 许可证下载和安装 JAVA

问题描述

Oracle 已实施 OTN 许可证以下载和安装 JDK。我的问题是,我们如何在 Dockerfile 中实现这种 OTN 机制来下载 JDK?

以前,我们曾经在这里提到过“接受许可”的东西。

现在,我找不到,如何在 dockerfile 中添加新的 OTN 许可证信息?

这是我得到的错误:

--2019-06-11 12:30:58-- http://download.oracle.com/otn/java/jdk/8u211-b12/jdk-8u211-linux-x64.rpm 解析download.oracle.com( download.oracle.com)... 23.208.140.200 正在连接到 download.oracle.com (download.oracle.com)|23.208.140.200|:80... 已连接。HTTP 请求已发送,等待响应... 302 已临时移动 位置: https ://edelivery.oracle.com/akam/otn/java/jdk/8u211-b12/jdk-8u211-linux-x64.rpm

[下] --2019-06-11 12:30:58-- https://edelivery.oracle.com/akam/otn/java/jdk/8u211-b12/jdk-8u211-linux-x64.rpm 解决edelivery .oracle.com (edelivery.oracle.com)... 23.205.198.52, 2600:1404:23:189::366, 2600:1404:23:19b::366 连接到 edelivery.oracle.com (edelivery.oracle .com)|23.205.198.52|:443... 已连接。已发送 HTTP 请求,等待响应... 302 临时移动位置: https://login.oracle.com:443/oam/server/obrareq.cgi?encquery%3DnUf9lWZl8SXSVIuOAyrI0TMo%2FOmAILRpxAofH%2BuBpv9eLV8YAdmEENk4cpEEIImSh7%2Bz224paFAZbie%2Fs1G8v1157ZE%2Bu2uxUGSWVspQAhHciZMHwa14qSBmDSwNil7kYFwExQGzckmavRmezYC6TLpvGEkhNVmXvyYgOc7swj29yTyU%2BdsfeP8BKM0jYDvIA4v93DLoqDgUWZf0TmJCBpQwF8yS%2Bgd3tCm0YZrPlv4xIxbyYKGoTuv%2BOfF8NGCd2wUjmBHLjWG%2B65tXWryc3ybPI1tRbeZWOpPSeW%2BYlqv4s0HMSU8JBWLJBWY6lxP43E6EtI7JfkK%2BEAx%2FmawJtSWhpV8d%2BfekFMirQeOGe8QnFZWeozekGSOHmZmr3yYQOd3SAc3KTDk6SnJFl9p9E3a2BXK64EOIwdL7uYi% 2FGzo08wiyBEncFiN5lVCpf4BX%20agentid%3Dedelivery-extprod%20ver%3D1%20crmethod%3D2%26cksum%3Dc92be7b91c2e259453c6fbf83efbd92c66fa451a&ECID-Context=1.005Ykhs7qOT7a6KaETu1US0004sd00063H%3BkXjE [following] --2019-06-11 12:30:58-- https://login.oracle.com/oam/server/obrareq.cgi?encquery%3DnUf9lWZl8SXSVIuOAyrI0TMo%2FOmAILRpxAofH%2BuBpv9eLV8YAdmEENk4cpEEIImSh7%2Bz224paFAZbie%2Fs1G8v1157ZE%2Bu2uxUGSWVspQAhHciZMHwa14qSBmDSwNil7kYFwExQGzckmavRmezYC6TLpvGEkhNVmXvyYgOc7swj29yTyU%2BdsfeP8BKM0jYDvIA4v93DLoqDgUWZf0TmJCBpQwF8yS%2Bgd3tCm0YZrPlv4xIxbyYKGoTuv%2BOfF8NGCd2wUjmBHLjWG%2B65tXWryc3ybPI1tRbeZWOpPSeW%2BYlqv4s0HMSU8JBWLJBWY6lxP43E6EtI7JfkK%2BEAx%2FmawJtSWhpV8d%2BfekFMirQeOGe8QnFZWeozekGSOHmZmr3yYQOd3SAc3KTDk6SnJFl9p9E3a2BXK64EOIwdL7uYi%2FGzo08wiyBEncFiN5lVCpf4BX% 20agentid%3Dedelivery-extprod%20ver%3D1%20crmethod%3D2%26cksum%3Dc92be7b91c2e259453c6fbf83efbd92c66fa451a&ECID-Context=1.005Ykhs7qOT7a6KaETu1US0004sd00063H%3BkXjE 正在解析 login.oracle.com (login.oracle.com)... 156.151.58.18 正在连接到 login.oracle.com (login.oracle.com)|156.151.58.18|:443... 已连接。

码头文件是:

FROM    centos

ENV UPDATE_VERSION=8u73
ENV JAVA_VERSION=1.8.0_73
ENV BUILD=b02

RUN yum -y update && \
    yum -y install wget && \
    wget -c --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/${UPDATE_VERSION}-${BUILD}/jdk-${UPDATE_VERSION}-linux-x64.rpm" --output-document="jdk-${UPDATE_VERSION}-linux-x64.rpm" && \
    rpm -i jdk-${UPDATE_VERSION}-linux-x64.rpm && \
    alternatives --install /usr/bin/java java /usr/java/jdk${JAVA_VERSION}/bin/java 1 && \
    alternatives --set java /usr/java/jdk${JAVA_VERSION}/bin/java && \
    export JAVA_HOME=/usr/java/jdk${JAVA_VERSION}/ && \
    echo "export JAVA_HOME=/usr/java/jdk${JAVA_VERSION}/" | tee /etc/environment && \
    source /etc/environment && \
    rm jdk-${UPDATE_VERSION}-linux-x64.rpm

ENV JAVA_HOME=/usr/java/jdk${JAVA_VERSION}/

标签: javadockerfile

解决方案


您应该考虑运行另一个 OpenJDK 发行版。Oracle 已更改其运行 OracleJDK 的条款,您需要为其提供付费 OTN 订阅,以便为商业用例运行 OracleJDK:

https://java.com/en/download/release_notice.jsp

长期使用像AdoptOpenJDK这样的 OpenJDK 发行版会更好,它不会强迫您经历这些处理 OTN 恶作剧的技巧。在功能上,AdoptOpenJDK 等同于 OracleJDK,因为它们是从相同的代码库构建的。我们已经开始使用 AdoptOpenJDK,它几乎是一个替代品。


推荐阅读