代码之家  ›  专栏  ›  技术社区  ›  Utsav Chokshi ruddra

使用ubuntu映像在dockerfile中安装JDK 8 update 172

  •  5
  • Utsav Chokshi ruddra  · 技术社区  · 6 年前

    我习惯于在dockerfile中下载java,如下所示:

    # Install Java
    ENV JAVA_VERSION_MAJOR 8
    ENV JAVA_VERSION_MINOR 162
    ENV JAVA_VERSION_BUILD 12
    ENV JAVA_DOWNLOAD_HASH 0da788060d494f5095bf8624735fa2f1
    RUN mkdir -p /usr/lib/jvm \
        && cd /usr/lib/jvm \
        && wget -nv --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/${JAVA_VERSION_MAJOR}u${JAVA_VERSION_MINOR}-b${JAVA_VERSION_BUILD}/${JAVA_DOWNLOAD_HASH}/jdk-${JAVA_VERSION_MAJOR}u${JAVA_VERSION_MINOR}-linux-x64.tar.gz \
        && tar xf jdk-${JAVA_VERSION_MAJOR}u${JAVA_VERSION_MINOR}-linux-x64.tar.gz \
        && rm jdk-${JAVA_VERSION_MAJOR}u${JAVA_VERSION_MINOR}-linux-x64.tar.gz \
        && update-alternatives --install "/usr/bin/java" "java" "/usr/lib/jvm/jdk1.${JAVA_VERSION_MAJOR}.0_${JAVA_VERSION_MINOR}/bin/java" 1
    ENV JAVA_HOME /usr/lib/jvm/jdk1.${JAVA_VERSION_MAJOR}.0_${JAVA_VERSION_MINOR}
    

    显然,oracle发布了新的更新 8u172 dockerfile中的下载失败 ERROR 404: Not Found.

    我的问题是,我怎样才能发现 JAVA_DOWNLOAD_HASH 变量

    其余变量值对我来说很清楚:

    JAVA_VERSION_MAJOR 8
    JAVA_VERSION_MINOR 172
    JAVA_VERSION_BUILD 11
    

    请注意,我的基本docker图像是: ubuntu:16.04

    我在ubuntu中安装java的灵感来自 here

    3 回复  |  直到 6 年前
        1
  •  6
  •   Utsav Chokshi ruddra    5 年前

    我认为oracle已经修复了 broken web8upd

    所以现在指定了dockerfile on github 工作完美!

    只需复制粘贴相同的dockerfile并进行一些修改:

    FROM ubuntu:16.04
    
    # To solve add-apt-repository : command not found
    RUN apt-get -y install software-properties-common
    
    # Install Java
    RUN \
      echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections && \
      add-apt-repository -y ppa:webupd8team/java && \
      apt-get update && \
      apt-get install -y oracle-java8-installer --allow-unauthenticated && \
      rm -rf /var/lib/apt/lists/* && \
      rm -rf /var/cache/oracle-jdk8-installer
    
    
    # Define commonly used JAVA_HOME variable
    ENV JAVA_HOME /usr/lib/jvm/java-8-oracle
    

    请注意: rm -rf /var/lib/apt/lists/* 将删除获取的所有列表 apt-get update

    因此,如果您想在安装后安装更多内容 Java 去除 rm-rf/var/lib/apt/列表/* 否则你必须跑 更新源 再一次

        2
  •  0
  •   Rawan-25    3 年前

    请检查以下代码,只需复制并粘贴到dockerfile中 用于安装java

    FROM ubuntu:18.04
    
    
     
    # Install "software-properties-common" (for the "add-apt-repository")
    RUN apt-get update && apt-get install -y \
        software-properties-common
    # Add the "JAVA" ppa
    RUN add-apt-repository -y \
        ppa:webupd8team/java
    
    # Install OpenJDK-8
    RUN apt-get update && \
        apt-get install -y openjdk-8-jdk && \
        apt-get install -y ant && \
        apt-get clean;
    
    # Fix certificate issues
    RUN apt-get update && \
        apt-get install ca-certificates-java && \
        apt-get clean && \
        update-ca-certificates -f \
        rm -rf /var/lib/apt/lists/* && \
        rm -rf /var/cache/oracle-jdk8-installer
    
    # Setup JAVA_HOME -- useful for docker commandline
    ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
    RUN export JAVA_HOME
    
        3
  •  0
  •   cigien    2 年前

    上述解决方案对我不起作用,但有助于起步。这是为我工作的

    文件名:ubuntu\u oraclejdk8

    FROM ubuntu:18.04
     
    # Install "software-properties-common" (for the "add-apt-repository")
    RUN apt-get update && apt-get install -y \
        software-properties-common
    
    ## Install Oracle's JDK
    # add oracle jdk repository
    RUN add-apt-repository ppa:ts.sch.gr/ppa \
    # accept oracle license
      && echo debconf shared/accepted-oracle-license-v1-1 select true | debconf-set-selections \
      && echo debconf shared/accepted-oracle-license-v1-1 seen true | debconf-set-selections \
      && apt-get update \
    # install oracle jdk 8 and make it default
      && apt-get -y install oracle-java8-installer \
      && apt-get -y install oracle-java8-set-default \
    # clean up
      && apt-get clean all \
      && rm -rf /var/lib/apt/lists/*
    CMD ["bash"]
    

    Docker使其工作的步骤

    $ docker build -t ubuntu_oraclejdk8 - < ubuntu_oraclejdk8
    $ docker run -it ubuntu_oraclejdk8