Imagen acoplable OpenJDK Java 17

4 minutos de lectura

Estamos actualizando nuestros microservicios en Docker para usar Java 17 y anteriormente usábamos la imagen base openjdk:11-jre-slim. ¿Cuál es la imagen correspondiente para Java 17?

¿No parece haber un openjdk: 17-jre-slim? De hecho, no parece haber imágenes jre recientes, solo jdks. La imagen 11-jre-slim parece tener alrededor de 75 MB. ¿Hay una imagen Java 17 de tamaño similar adecuada?

También hemos usado imágenes alpinas en el pasado.

  • Vea este problema de github: github.com/docker-library/openjdk/issues/468 Upstream ya no proporciona un JRE, por lo que no se producirán imágenes oficiales de JRE. Hay una discusión similar sobre Adoptium (anteriormente AdoptOpenJDK) ya no lanza JRE. Para bien o para mal, los JRE oficiales siguen el camino del Dodo.

    – Joaquín Sauer

    11 oct 2021 a las 11:10


  • Dicho esto, parece que jdk ahora viene con herramientas para producir JRE personalizados, por lo que debería ser posible crear uno por su cuenta: baeldung.com/jlink y aquí un ejemplo de Eclipse Tamurin para un JRE openjdk 11: hub.docker.com/_/eclipse-temurin blog.adoptium.net/2021/08/usando-jlink-en-dockerfiles

    – kutschkem

    11 oct 2021 a las 11:21


  • @kutschkem: sí, las imágenes base personalizadas creadas con jlink son la alternativa, pero no las llamaría “JRE”, porque eso no es exactamente lo que son y llamarlas puede llevar a suposiciones que no son correctas y a confusión.

    – Joaquín Sauer

    11 oct 2021 a las 11:23

  • Puedes usar Alpino JDK 17 FROM openjdk:17-alpine

    – CᴴᴀZ

    18 de agosto de 2022 a las 7:41

Avatar de usuario de Santanu
Santanu

La imagen de Oracle está disponible gratuitamente desde Java-17 openjdk:17-oracle

archivo acoplable:

FROM openjdk:17-oracle

openjdk:17-jdk-slim también crea una imagen ligera

archivo acoplable:

FROM openjdk:17-jdk-slim

  • 17-oracle es la misma etiqueta para 17.0.1-jdk-oraclelinux8, jdk-oraclelinux8, 17.0.1-jdk-oracle, 17-jdk-oracle, 17-oracle, jdk-oracle, etc. Básicamente es el mismo JDK imagen, no JRE. github.com/docker-library/docs/blob/master/openjdk/…

    – igor

    14 de enero de 2022 a las 8:49

  • ¿No tiene esto problemas de licencia? La mayoría de la gente quiere evitar Oracle en estos días, creo.

    – Novaterata

    18 de abril de 2022 a las 16:38

  • @Novaterata desde Java 17 en adelante, puede usarlo libremente incluso con fines comerciales

    – Deekshith Anand

    16 de mayo de 2022 a las 9:13

  • @DeekshithAnand 🤯

    – Novaterata

    16 mayo 2022 a las 16:02

  • como @DeekshithAnand mencionó perfectamente desde Java 17 en adelante, la imagen de Oracle se puede usar libremente. Si está buscando una imagen diferente, “openjdk: 17-jdk-slim” también funciona bien para crear una imagen liviana

    – Santanu

    22 de agosto de 2022 a las 6:15

Si está buscando las imágenes Docker más pequeñas con Alpine Linux y OpenJDK, eche un vistazo a los contenedores Liberica JDK en DockerHub https://hub.docker.com/r/bellsoft/liberica-openjdk-alpine
Las imágenes tienen Alpine y Liberica Lite, cuyo tamaño está optimizado para usarse en microservicios. También es recomendado por el equipo de primavera. https://spring.io/inicio rápido

Puedes probar esto (eclipse-temurin:17-jre-alpine) que tiene alrededor de 50 MB de tamaño comprimido
https://hub.docker.com/layers/eclipse-temurin/library/eclipse-temurin/17-jre-alpine/images/sha256-839f3208bfc22f17bf57391d5c91d51c627d032d6900a0475228b94e48a8f9b3?context=explore

No pude encontrar una imagen OpenJDK jre

Avatar de usuario de Paul Verest
Pablo Verest

(A partir de 2023) No use ningún openjdk:17- ¡imágenes, porque lo que puede obtener son compilaciones antiguas de jdk 17 con problemas de seguridad!
En https://hub.docker.com/_/openjdk hay claro

AVISO DE DESAPROBACIÓN

¡openJDK 17 ya no está construido!
(y no mantenido en https://github.com/docker-library/openjdk)


Si bien antes era más simple usar cualquier sabor de Linux, ahora debe elegir de manera diferente compilaciones openJDK Las imágenes de la ventana acoplable usarán diferentes sabores de Linux.

Por ejemplo, amazoncorreto – Amazon Linux,
Oracle JDK – Oracle Linux, etc.


Diferentes fuentes pueden recomendar de manera diferente

Por ejemplo, en https://docs.docker.com/language/java/build-images/ usos eclipse-temurin

DESDE eclipse-temurin:17-jdk-jammy

Una actualización sobre esto: mirando nuevamente el problema de Eclipse Adoptium mencionado anteriormente (https://github.com/adoptium/temurin-build/issues/2683) los comentarios más recientes indican que ahora han comenzado a producir imágenes JRE.

Hemos cambiado a usar eclipse-temurin:17-jre-focal. También hay un (un poco más grande) 17-jre-centos7 y un mas pequeño 17-jre-alpinepero ahora necesitamos algunas bibliotecas que no están en alpine.

Avatar de usuario de Introspective
Introspectivo

Agregando a la excelente respuesta de @PaulVerest, para el beneficio de otros novatos como yo, estoy publicando aquí el Dockerfile que funciona para mí (a partir de mayo de 2023, construido y ejecutado desde un Windows 10 ORDENADOR PERSONAL):

FROM amazoncorretto:17.0.7-alpine

# Add app user
ARG APPLICATION_USER=appuser
RUN adduser --no-create-home -u 1000 -D $APPLICATION_USER

# Configure working directory
RUN mkdir /app && \
    chown -R $APPLICATION_USER /app

USER 1000

COPY --chown=1000:1000 ./myapp-0.0.1-SNAPSHOT.jar /app/app.jar
WORKDIR /app

EXPOSE 8080
ENTRYPOINT [ "java", "-jar", "/app/app.jar" ]

Si construiste tu contenedor usando:

docker build -t docker_myapp .

Luego, ejecútelo desde la línea de comando usando:

docker run -p 8080:8080 docker_myapp

Nota: no puede detenerlo desde la misma línea de comando usando Ctrl+C. Para detenerlo, debe abrir otra línea de comando y hacer:

docker ps
CONTAINER ID   IMAGE                    COMMAND                  CREATED       STATUS       PORTS                    NAMES
16dad8047672   docker_myapp   "java -jar /app/app.…"   7 hours ago   Up 7 hours   0.0.0.0:8080->8080/tcp   sharp_rode

Entonces:

docker stop 16dad8047672   

avatar de usuario de belem
belem

En su Dockerfile enlace:

FROM openjdk:17-alpine

¿Ha sido útil esta solución?