Найти в Дзене
Java

🚀 Docker + Java совет

🚀 Docker + Java совет Для Java-приложений в Docker лучше всего использовать многоступенчатую сборку с jlink или jpackage, чтобы собрать кастомный JRE только с нужными модулями. # Этап сборки jar FROM maven:3.9.8-eclipse-temurin-21 AS builder WORKDIR /app COPY pom.xml . COPY src ./src RUN mvn package -DskipTests # Этап с оптимизированным JRE FROM eclipse-temurin:21-jre-jammy WORKDIR /app COPY --from=builder /app/target/myapp.jar myapp.jar # Оптимизация: ограничим потребление памяти JVM в контейнере ENTRYPOINT ["java", "-XX:+UseContainerSupport", "-XX:MaxRAMPercentage=75", "-jar", "myapp.jar"] 💡 Такой подход: - уменьшает размер образа, - использует только нужные зависимости, - и корректно учитывает ограничения памяти/CPU контейнера. @javarush

🚀 Docker + Java совет

Для Java-приложений в Docker лучше всего использовать многоступенчатую сборку с jlink или jpackage, чтобы собрать кастомный JRE только с нужными модулями.

# Этап сборки jar

FROM maven:3.9.8-eclipse-temurin-21 AS builder

WORKDIR /app

COPY pom.xml .

COPY src ./src

RUN mvn package -DskipTests

# Этап с оптимизированным JRE

FROM eclipse-temurin:21-jre-jammy

WORKDIR /app

COPY --from=builder /app/target/myapp.jar myapp.jar

# Оптимизация: ограничим потребление памяти JVM в контейнере

ENTRYPOINT ["java", "-XX:+UseContainerSupport", "-XX:MaxRAMPercentage=75", "-jar", "myapp.jar"]

💡 Такой подход:

- уменьшает размер образа,

- использует только нужные зависимости,

- и корректно учитывает ограничения памяти/CPU контейнера.

@javarush