在docker映像中的docker上安装Java

在docker映像中的docker上安装Java,java,docker,dockerfile,Java,Docker,Dockerfile,我想在docker映像中的docker上安装openjdk。当我尝试此操作时,会收到以下错误消息: 我的Dockerfile当前看起来如下所示: 有一个Dockerfile参考文件,介绍了官方Java图像是如何在alpine图像上烘焙的: 或者你可以用另一种方式 正如@user2105103提到的,这是JDK版本的一个问题 您只需跳过该版本,问题就会消失。例如: 在本例中,您将获得最新的JDK版本。希望有帮助。与docker无关。这是一件阿尔卑斯山的古董。删除该版本后,它就可以正常工作。它

我想在docker映像中的docker上安装openjdk。当我尝试此操作时,会收到以下错误消息:

我的Dockerfile当前看起来如下所示:

有一个Dockerfile参考文件,介绍了官方Java图像是如何在alpine图像上烘焙的:

或者你可以用另一种方式


正如@user2105103提到的,这是JDK版本的一个问题

您只需跳过该版本,问题就会消失。例如:


在本例中,您将获得最新的JDK版本。希望有帮助。

与docker无关。这是一件阿尔卑斯山的古董。删除该版本后,它就可以正常工作。它还直接告诉您问题所在。如果我需要使用另一个基本映像,那么您可能必须使用java安装从特定的基本映像烘焙该映像。但在大多数情况下,如果基本映像需要Java,则它们很可能已经烘焙了包含Java的映像。

fetch http://dl-cdn.alpinelinux.org/alpine/v3.5/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.5/community
ERROR: unsatisfiable constraints:
  openjdk8-8.121.13-r0:
    breaks: world[openjdk8=8.111.14-r0]
The command '/bin/sh -c set -x  && apk add --no-cache       openjdk8="$JAVA_ALPINE_VERSION" && [ "$JAVA_HOME" = "$(docker-java-home)" ]' returned a non-zero code: 1

FROM docker:latest
RUN apk update
ENV LANG C.UTF-8
RUN { \
        echo '#!/bin/sh'; \
        echo 'set -e'; \
        echo; \
        echo 'dirname "$(dirname "$(readlink -f "$(which javac || which java)")")"'; \
    } > /usr/local/bin/docker-java-home \
    && chmod +x /usr/local/bin/docker-java-home
ENV JAVA_HOME /usr/lib/jvm/java-1.8-openjdk
ENV PATH $PATH:/usr/lib/jvm/java-1.8-openjdk/jre/bin:/usr/lib/jvm/java-1.8-openjdk/bin
ENV JAVA_VERSION 8u111
ENV JAVA_ALPINE_VERSION 8.111.14-r0
RUN set -x \
    && apk add --no-cache \
        openjdk8="$JAVA_ALPINE_VERSION" \
&& [ "$JAVA_HOME" = "$(docker-java-home)" ]
# build ontop of official Java image
FROM java:openjdk-8-jdk-alpine

RUN apk update && \
    apk add docker
...
FROM docker:latest

# Default to UTF-8 file.encoding
ENV LANG C.UTF-8

# add a simple script that can auto-detect the appropriate JAVA_HOME value
# based on whether the JDK or only the JRE is installed
RUN { \
        echo '#!/bin/sh'; \
        echo 'set -e'; \
        echo; \
        echo 'dirname "$(dirname "$(readlink -f "$(which javac || which java)")")"'; \
    } > /usr/local/bin/docker-java-home \
    && chmod +x /usr/local/bin/docker-java-home

ENV JAVA_HOME /usr/lib/jvm/java-1.8-openjdk
ENV PATH $PATH:/usr/lib/jvm/java-1.8-openjdk/jre/bin:/usr/lib/jvm/java-1.8-openjdk/bin

ENV JAVA_VERSION 8u111
ENV JAVA_ALPINE_VERSION 8.111.14-r0

RUN set -x && apk add --no-cache openjdk8 && [ "$JAVA_HOME" = "$(docker-java-home)" ]