Dockerfile alpine 镜像 apk 找不到 Java 8
Dockerfile alpine image apk cannot find Java 8
我想缩小我的 docker 图像并切换到 alpine 基础图像。这导致 bash 找不到合适的问题。事实证明,我必须改用 apk。但是,它似乎没有找到我需要的 java 版本。这是我的docker文件
#Use alpine golang
FROM golang:alpine
#Get the code from local code commit repo
WORKDIR /go/src/xxx
COPY . /go/src/xxx
#Install Java and cleanup after in the same layer
RUN apk update && apk add openjdk-8-jre-headless && rm -rf /var/lib/apt/lists/*
#Install dependencies recursively and remove the third_party directory after it has been used for compiling.
RUN go get ./... && go run setup.go && RUN rm -rf third_party
#More commands...
---> 32a6b6b5f196
Step 4/8 : RUN apk update && apk add openjdk-8-jre-headless && rm -rf /var/lib/apt/lists/*
---> Running in bc48930e48be
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
v3.9.4-4-gd5dd5c1cd0 [http://dl-cdn.alpinelinux.org/alpine/v3.9/main]
v3.9.4-5-gcfdf5452f1 [http://dl-cdn.alpinelinux.org/alpine/v3.9/community]
OK: 9766 distinct packages available
openjdk-8-jre-headless (missing):
·[91mERROR: unsatisfiable constraints:
·[0m required by: world[openjdk-8-jre-headless]
The command '/bin/sh -c apk update && apk add openjdk-8-jre-headless && rm -rf /var/lib/apt/lists/*' returned a non-zero code: 1
我也试过了
RUN apk update && apk add -t jessie-backports openjdk-8-jre-headless ca-certificates-java && rm -rf /var/lib/apt/lists/*
根据 https://unix.stackexchange.com/questions/342403/openjdk-8-jre-headless-depends-ca-certificates-java-but-it-is-not-going-to-be 但这也失败了,不确定 -t 是否标记错误:
Step 4/7 : RUN apk update && apk add -t jessie-backports openjdk-8-jre-headless ca-certificates-java && rm -rf /var/lib/apt/lists/*
---> Running in 1e2ef22e7c16
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
v3.9.4-4-gd5dd5c1cd0 [http://dl-cdn.alpinelinux.org/alpine/v3.9/main]
v3.9.4-5-gcfdf5452f1 [http://dl-cdn.alpinelinux.org/alpine/v3.9/community]
OK: 9766 distinct packages available
·[91mERROR: unsatisfiable constraints:
·[0m openjdk-8-jre-headless (missing):
required by: jessie-backports-0[openjdk-8-jre-headless]
ca-certificates-java (missing):
required by: jessie-backports-0[ca-certificates-java]
The command '/bin/sh -c apk update && apk add -t jessie-backports openjdk-8-jre-headless ca-certificates-java && rm -rf /var/lib/apt/lists/*' returned a non-zero code: 3
Alpine 使用与 Debian 或 Ubuntu 完全不同的包存储库。包 openjdk-8-jre-headless
在那里不存在。您可以查看此 here 并找到适合您需要的正确软件包。
您可以查看官方 alpine OpenJDK 镜像的下载方式 java 并按照相同的步骤进行操作
简而言之,您可以在您的 Dockerfile 中添加以下代码
# 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 8u212
ENV JAVA_ALPINE_VERSION 8.212.04-r0
RUN set -x \
&& apk add --no-cache \
openjdk8="$JAVA_ALPINE_VERSION" \
&& [ "$JAVA_HOME" = "$(docker-java-home)" ]
希望对您有所帮助
如果您使用的是 Alpine 镜像,请使用以下命令添加 java8
RUN apk add openjdk8-jre
我想缩小我的 docker 图像并切换到 alpine 基础图像。这导致 bash 找不到合适的问题。事实证明,我必须改用 apk。但是,它似乎没有找到我需要的 java 版本。这是我的docker文件
#Use alpine golang
FROM golang:alpine
#Get the code from local code commit repo
WORKDIR /go/src/xxx
COPY . /go/src/xxx
#Install Java and cleanup after in the same layer
RUN apk update && apk add openjdk-8-jre-headless && rm -rf /var/lib/apt/lists/*
#Install dependencies recursively and remove the third_party directory after it has been used for compiling.
RUN go get ./... && go run setup.go && RUN rm -rf third_party
#More commands...
---> 32a6b6b5f196
Step 4/8 : RUN apk update && apk add openjdk-8-jre-headless && rm -rf /var/lib/apt/lists/*
---> Running in bc48930e48be
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
v3.9.4-4-gd5dd5c1cd0 [http://dl-cdn.alpinelinux.org/alpine/v3.9/main]
v3.9.4-5-gcfdf5452f1 [http://dl-cdn.alpinelinux.org/alpine/v3.9/community]
OK: 9766 distinct packages available
openjdk-8-jre-headless (missing):
·[91mERROR: unsatisfiable constraints:
·[0m required by: world[openjdk-8-jre-headless]
The command '/bin/sh -c apk update && apk add openjdk-8-jre-headless && rm -rf /var/lib/apt/lists/*' returned a non-zero code: 1
我也试过了
RUN apk update && apk add -t jessie-backports openjdk-8-jre-headless ca-certificates-java && rm -rf /var/lib/apt/lists/*
根据 https://unix.stackexchange.com/questions/342403/openjdk-8-jre-headless-depends-ca-certificates-java-but-it-is-not-going-to-be 但这也失败了,不确定 -t 是否标记错误:
Step 4/7 : RUN apk update && apk add -t jessie-backports openjdk-8-jre-headless ca-certificates-java && rm -rf /var/lib/apt/lists/*
---> Running in 1e2ef22e7c16
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
v3.9.4-4-gd5dd5c1cd0 [http://dl-cdn.alpinelinux.org/alpine/v3.9/main]
v3.9.4-5-gcfdf5452f1 [http://dl-cdn.alpinelinux.org/alpine/v3.9/community]
OK: 9766 distinct packages available
·[91mERROR: unsatisfiable constraints:
·[0m openjdk-8-jre-headless (missing):
required by: jessie-backports-0[openjdk-8-jre-headless]
ca-certificates-java (missing):
required by: jessie-backports-0[ca-certificates-java]
The command '/bin/sh -c apk update && apk add -t jessie-backports openjdk-8-jre-headless ca-certificates-java && rm -rf /var/lib/apt/lists/*' returned a non-zero code: 3
Alpine 使用与 Debian 或 Ubuntu 完全不同的包存储库。包 openjdk-8-jre-headless
在那里不存在。您可以查看此 here 并找到适合您需要的正确软件包。
您可以查看官方 alpine OpenJDK 镜像的下载方式 java 并按照相同的步骤进行操作
简而言之,您可以在您的 Dockerfile 中添加以下代码
# 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 8u212
ENV JAVA_ALPINE_VERSION 8.212.04-r0
RUN set -x \
&& apk add --no-cache \
openjdk8="$JAVA_ALPINE_VERSION" \
&& [ "$JAVA_HOME" = "$(docker-java-home)" ]
希望对您有所帮助
如果您使用的是 Alpine 镜像,请使用以下命令添加 java8
RUN apk add openjdk8-jre