java - 如何在 Docker 镜像中安装 Java 9 和 Gradle

标签 java gradle dockerfile

我尝试在 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 &&<br/> pkg="openjdk-$JAVA_VERSION"; if [ "$JAVA_RELEASE" = "JDK" ]; then pkg="$pkg-jdk-headless"; else pkg="$pkg-jre-headless";<br/> fi; apt-get install -y --no-install-recommends "$pkg" &&<br/> apt-get clean'' returned a non-zero code: 100

最佳答案

ubuntu:latest 标签目前是ubuntu:18.04 (bionic),它只包含java packages对于openjdk-8-jdk-headlessopenjdk-11-jdk-headless但不是 openjdk-9-jdk-headless(已经达到 end-of-life ,至少对于公共(public)更新而言)。

openjdk-9-jdk-headless不过在 ubuntu: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

关于java - 如何在 Docker 镜像中安装 Java 9 和 Gradle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50550013/

相关文章:

android - Android版本不断因Room和Kapt失败而失败:app:kaptDebugKotlin

python - “RUN pip install -rrequirements.txt”不起作用

java - 将多重集计数转换为列表 Java

java - Hibernate:只查找那些不在多对多关系中的行

java - 以编程方式更改 PopupMenu 项目的标题

node.js - 安装nodejs返回非零代码: 1 with docker build

docker - Docker容器中的.NET Core Windows身份验证

java - 在数组中找到两个具有精确部分的组

jenkins - Jenkins Artifactory插件未使用Gradle发布 Artifactory

android - 在Android Gradle中,有没有办法使用本地快照依赖?