首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在docker映像中安装docker上的Java

在docker映像中安装docker上的Java
EN

Stack Overflow用户
提问于 2017-03-01 00:10:18
回答 2查看 8.6K关注 0票数 4

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

代码语言:javascript
复制
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

我的Dockerfile当前如下所示:

代码语言:javascript
复制
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)" ]

EN

回答 2

Stack Overflow用户

发布于 2017-03-15 16:01:06

有一个关于官方Java镜像如何在高山镜像上烘焙的Dockerfile参考:https://github.com/docker-library/openjdk/blob/9a0822673dffd3e5ba66f18a8547aa60faed6d08/8-jdk/alpine/Dockerfile

或者你可以换一种方式来做,

代码语言:javascript
复制
# build ontop of official Java image
FROM java:openjdk-8-jdk-alpine

RUN apk update && \
    apk add docker
...
票数 2
EN

Stack Overflow用户

发布于 2018-08-07 18:01:43

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

你可以简单地跳过这个版本,问题就会消失。示例:

代码语言:javascript
复制
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)" ]

在这种情况下,您将获得最新的JDK版本。希望能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42513642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档