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.
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
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-alpine
pero ahora necesitamos algunas bibliotecas que no están en alpine.
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
belem
En su Dockerfile enlace:
FROM openjdk:17-alpine
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