java - 如何在 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}/
解决方案
您应该考虑运行另一个 OpenJDK 发行版。Oracle 已更改其运行 OracleJDK 的条款,您需要为其提供付费 OTN 订阅,以便为商业用例运行 OracleJDK:
https://java.com/en/download/release_notice.jsp
长期使用像AdoptOpenJDK这样的 OpenJDK 发行版会更好,它不会强迫您经历这些处理 OTN 恶作剧的技巧。在功能上,AdoptOpenJDK 等同于 OracleJDK,因为它们是从相同的代码库构建的。我们已经开始使用 AdoptOpenJDK,它几乎是一个替代品。
推荐阅读
- java - Java Apache Spark 将 TSV 格式转换为 JavaRDD
- opengl - OpenGL Pin PBO 内存
- c# - 比较两个字段时,来自 OrganizationServiceProxy 的 Linq Queryable 抛出异常
- logstash - Logstash 文件输入不解析文件
- flutter - 整数列表的基本操作
- twilio - 特维利奥
连接器选项? - android - 如何从 Android 项目的 build.gradle 运行 Kotlin 任务?
- python - 将字符串与“{”符号进行比较的问题
- r - R: Formattable -Column 不会根据条件更新
- angular - 什么时候在 Angular 中使用路由?