This commit is contained in:
xds
2025-10-31 15:48:55 +03:00
parent 8d1b0f2a3c
commit 1bc5932793

View File

@@ -1,31 +1,36 @@
# ---------- build stage ---------- # ---------- build stage ----------
FROM gradle:jdk17-ubi AS build FROM gradle:8.9.0-jdk17-alpine AS build
WORKDIR /app WORKDIR /app
COPY gradlew gradlew
COPY gradle gradle # Копируем wrapper + его папку (важно, что это две разные сущности)
COPY build.gradle.kts settings.gradle.kts ./ COPY --chown=gradle:gradle gradlew ./gradlew
COPY src src COPY --chown=gradle:gradle gradle/ ./gradle/
# Копируем скрипты сборки и исходники
COPY --chown=gradle:gradle build.gradle.kts settings.gradle.kts ./
COPY --chown=gradle:gradle src ./src
# Делаем gradlew исполняемым
RUN chmod +x gradlew
# Подкачаем зависимости (кэшируется) и соберём jar
RUN ./gradlew --no-daemon dependencies RUN ./gradlew --no-daemon dependencies
RUN ./gradlew --no-daemon clean bootJar RUN ./gradlew --no-daemon clean bootJar
# ---------- run stage ---------- # ---------- run stage ----------
FROM eclipse-temurin:17.0.16_8-jre AS runtime FROM eclipse-temurin:17-jre AS runtime
WORKDIR /app WORKDIR /app
# Create non-root user with a higher UID/GID to avoid conflicts # (Опционально) установим curl для HEALTHCHECK
RUN groupadd --system --gid 1001 app && \ USER root
useradd --system --gid app --uid 1001 --shell /bin/bash --create-home app RUN apt-get update && apt-get install -y --no-install-recommends curl && rm -rf /var/lib/apt/lists/*
RUN groupadd --system --gid 1001 app && useradd --system --gid app --uid 1001 --shell /bin/bash --create-home app
# Создаём директорию и меняем владельца ДО переключения пользователя
RUN mkdir -p /app/static && chown -R app:app /app RUN mkdir -p /app/static && chown -R app:app /app
USER app USER app
COPY --from=build /app/build/libs/*.jar /app/app.jar COPY --from=build /app/build/libs/*.jar /app/app.jar
# Настройки JVM (Java 17)
ENV JAVA_TOOL_OPTIONS="-XX:+UseContainerSupport -XX:MaxRAMPercentage=75.0" ENV JAVA_TOOL_OPTIONS="-XX:+UseContainerSupport -XX:MaxRAMPercentage=75.0"
EXPOSE 8080 EXPOSE 8080
HEALTHCHECK --interval=20s --timeout=3s --retries=3 CMD wget -qO- http://localhost:8080/actuator/health || exit 1 HEALTHCHECK --interval=20s --timeout=3s --retries=3 CMD curl -fsS http://localhost:8080/actuator/health || exit 1
ENTRYPOINT ["java","-jar","/app/app.jar"] ENTRYPOINT ["java","-jar","/app/app.jar"]