Quería reducir la imagen de mi ventana acoplable y, en su lugar, cambié a una imagen base alpina. Esto lleva a problemas de que bash no encuentre apt. Resulta que tengo que usar apk en su lugar. Sin embargo, no parece encontrar la versión de Java que necesito. Aquí está mi dockerfile
#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: 1yo tambien he probado
RUN apk update && apk add -t jessie-backports openjdk-8-jre-headless ca-certificates-java && rm -rf /var/lib/apt/lists/*Según https://unix.stackexchange.com/questions/342403/openjdk-8-jre-headless-depends-ca-certificates-java-but-it-is-not-going-to-be pero eso también falla, no estoy seguro si el -t marca la falla:
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: 3Puede comprobar cómo descarga Java la imagen oficial OpenJDK de alpine y seguir los mismos pasos
verifique el archivo acoplable
En resumen, puede agregar el siguiente código en su 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)" ]espero que esto ayude
Si está utilizando una imagen Alpine, use el siguiente comando para agregar java8
RUN apk add openjdk8-jre