【问题标题】:How to install Java 9 and Gradle in a Docker image如何在 Docker 映像中安装 Java 9 和 Gradle
【发布时间】:2018-05-27 07:35:23
【问题描述】:

我尝试在 Docker 映像中安装 OpenJDK9 和 Gradle 4.5.1。

这是我的 Dockerfile:

FROM ubuntu:latest
MAINTAINER Hari Sekhon (https://www.linkedin.com/in/harisekhon)

LABEL Description="Java + Ubuntu (OpenJDK)"

ENV DEBIAN_FRONTEND noninteractive

ARG JAVA_VERSION=9
ARG JAVA_RELEASE=JDK

ENV JAVA_HOME=/usr

RUN bash -c ' \
    set -euxo pipefail && \
    apt-get update && \
    pkg="openjdk-$JAVA_VERSION"; \
    if [ "$JAVA_RELEASE" = "JDK" ]; then \
        pkg="$pkg-jdk-headless"; \
    else \
        pkg="$pkg-jre-headless"; \
    fi; \
    apt-get install -y --no-install-recommends "$pkg" && \
    apt-get clean'


CMD /bin/bash

#install Gradle
RUN wget -q https://services.gradle.org/distributions/gradle-4.5.1-bin.zip \
    && unzip gradle-4.5.1-bin.zip -d /opt \
    && rm gradle-4.5.1-bin.zip

# Set Gradle in the environment variables
ENV GRADLE_HOME /opt/gradle-4.5.1
ENV PATH $PATH:/opt/gradle-4.5.1/bin

我收到一个错误:

ubuntu@automation-ubuntu-17:~/dockerFiles$ The command '/bin/sh -c bash -c ' set -euxo pipefail && apt-get update &&
pkg="openjdk-$JAVA_VERSION"; if [ "$JAVA_RELEASE" = "JDK" ]; then pkg="$pkg-jdk-headless"; else pkg="$pkg-jre-headless";
fi; apt-get install -y --no-install-recommends "$pkg" &&
apt-get clean'' returned a non-zero code: 100

【问题讨论】:

  • 你为什么不直接使用dockerhub提供的jdk9镜像?
  • 我认为在ubuntu openJDK 9和gradle上安装有问题
  • 根据我的回答,使用 ubuntu:16.04 是否可以解决您的问题?还是出于某种原因需要使用 18.04?

标签: java gradle dockerfile


【解决方案1】:

ubuntu:latest 标签目前为ubuntu:18.04(仿生),其中只包含java packages for openjdk-8-jdk-headlessopenjdk-11-jdk-headless 但不包含openjdk-9-jdk-headless(已经达到end-of-life,至少公开更新)。

openjdk-9-jdk-headlessubuntu:16.04 (xenial) 中可用。

我通过切换到ubuntu:16.04 使构建工作,并将wgetunzip 添加到要安装的包列表中,因为它们随后用于下载和解压缩gradle,但默认情况下不安装。

FROM ubuntu:16.04
MAINTAINER Hari Sekhon (https://www.linkedin.com/in/harisekhon)

LABEL Description="Java + Ubuntu (OpenJDK)"

ENV DEBIAN_FRONTEND noninteractive

ARG JAVA_VERSION=9
ARG JAVA_RELEASE=JDK

ENV JAVA_HOME=/usr

RUN bash -c ' \
    set -euxo pipefail && \
    apt-get update && \
    pkg="openjdk-$JAVA_VERSION"; \
    if [ "$JAVA_RELEASE" = "JDK" ]; then \
        pkg="$pkg-jdk-headless"; \
    else \
        pkg="$pkg-jre-headless"; \
    fi; \
    apt-get install -y --no-install-recommends wget unzip "$pkg" && \
    apt-get clean'


CMD /bin/bash

#install Gradle
RUN wget -q https://services.gradle.org/distributions/gradle-4.5.1-bin.zip \
    && unzip gradle-4.5.1-bin.zip -d /opt \
    && rm gradle-4.5.1-bin.zip

# Set Gradle in the environment variables
ENV GRADLE_HOME /opt/gradle-4.5.1
ENV PATH $PATH:/opt/gradle-4.5.1/bin

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-09
    • 2021-04-02
    • 2018-05-31
    • 2020-05-12
    • 2017-11-04
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多