#docker #maven
Вопрос:
В моем докерфайле у меня есть строка » ОТ » примерно так :
ИЗ openjdk:11-jdk-alpine как сборка
Раньше это было на java 8, и все работало нормально.
Теперь я получаю эту ошибку :
C:devshape-shop-back-end>docker build .
[ ] Building 2.0s (5/5) FINISHED
=> [internal] load build definition from Dockerfile 0.1s
=> => transferring dockerfile: 1.31kB 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> CANCELED [internal] load metadata for docker.io/library/openjdk:11-jre-alpine 1.8s
=> ERROR [internal] load metadata for docker.io/library/openjdk:11-jdk-alpine 1.8s
=> [auth] library/openjdk:pull token for registry-1.docker.io 0.0s
------
> [internal] load metadata for docker.io/library/openjdk:11-jdk-alpine:
------
failed to solve with frontend dockerfile.v0: failed to create LLB definition: docker.io/library/openjdk:11-jdk-alpine: not found
Мой файл docker :
#### Stage 1: Build the application
FROM openjdk:11-jdk-alpine as build
# Set the current working directory inside the image
WORKDIR /app
# Copy maven executable to the image
COPY mvnw .
COPY .mvn .mvn
# Copy the pom.xml file
COPY pom.xml .
# Build all the dependencies in preparation to go offline.
# This is a separate step so the dependencies will be cached unless
# the pom.xml file has changed.
RUN ./mvnw dependency:go-offline -B
# Copy the project source
COPY src src
# Package the application
RUN ./mvnw package -DskipTests
RUN mkdir -p target/dependency amp;amp; (cd target/dependency; jar -xf ../*.jar)
#### Stage 2: A minimal docker image with command to run the app
FROM openjdk:11-jre-alpine
ARG DEPENDENCY=/app/target/dependency
# Copy project dependencies from the build stage
COPY --from=build ${DEPENDENCY}/BOOT-INF/lib /app/lib
COPY --from=build ${DEPENDENCY}/META-INF /app/META-INF
COPY --from=build ${DEPENDENCY}/BOOT-INF/classes /app
ENTRYPOINT ["java","-cp","app:app/lib/*","com.shapeshop.App"]
#ARG JAR_FILE=target/*.jar
#COPY ${JAR_FILE} app.jar
#ENTRYPOINT ["java","-jar","/app.jar"]
#
## Expose port 80 to the Docker host, so we can access it
## from the outside.
#EXPOSE 8080
Я что-то упускаю?
Ответ №1:
Это может помочь: https://hub.docker.com/_/openjdk
«Порт OpenJDK для Alpine не входит в поддерживаемый выпуск OpenJDK, поскольку он не входит в базу основного кода. Он доступен только в виде ранних сборок OpenJDK Project Portola. См.также этот комментарий. Таким образом, это изображение соответствует тому, что доступно сопровождающим проекта OpenJDK.
Это означает, что изображения на основе Alpine выпускаются только для версий OpenJDK с ранним доступом. Как только конкретный выпуск становится выпуском «Общей доступности», версия Alpine удаляется из «Поддерживаемых тегов»; они по-прежнему доступны для извлечения, но больше не будут обновляться».
Я не использую образы java, вместо этого может быть достаточно: https://hub.docker.com/r/adoptopenjdk/openjdk11/
Ответ №2:
Если я сделаю это без «альпийского», вот так :
FROM openjdk:11 as build
тогда это сработало для меня
Комментарии:
1. Это работа для меня. Спасибо