From 1bc59327937139cb1554cbfc358b042a2523367b Mon Sep 17 00:00:00 2001 From: xds Date: Fri, 31 Oct 2025 15:48:55 +0300 Subject: [PATCH] init --- Dockerfile | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/Dockerfile b/Dockerfile index b34f829..3185d4e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,31 +1,36 @@ # ---------- build stage ---------- -FROM gradle:jdk17-ubi AS build +FROM gradle:8.9.0-jdk17-alpine AS build WORKDIR /app -COPY gradlew gradlew -COPY gradle gradle -COPY build.gradle.kts settings.gradle.kts ./ -COPY src src + +# Копируем wrapper + его папку (важно, что это две разные сущности) +COPY --chown=gradle:gradle gradlew ./gradlew +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 clean bootJar # ---------- run stage ---------- -FROM eclipse-temurin:17.0.16_8-jre AS runtime +FROM eclipse-temurin:17-jre AS runtime WORKDIR /app -# Create non-root user with a higher UID/GID to avoid conflicts -RUN groupadd --system --gid 1001 app && \ - useradd --system --gid app --uid 1001 --shell /bin/bash --create-home app - -# Создаём директорию и меняем владельца ДО переключения пользователя +# (Опционально) установим curl для HEALTHCHECK +USER root +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 - USER app COPY --from=build /app/build/libs/*.jar /app/app.jar -# Настройки JVM (Java 17) ENV JAVA_TOOL_OPTIONS="-XX:+UseContainerSupport -XX:MaxRAMPercentage=75.0" - 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"] \ No newline at end of file