# Этап сборки FROM eclipse-temurin:17-jdk-alpine AS builder WORKDIR /app # Копируем Gradle wrapper и конфигурацию COPY gradlew build.gradle settings.gradle ./ COPY gradle gradle # Загружаем зависимости (кэшируется) RUN ./gradlew dependencies --no-daemon # Копируем исходники COPY src src # Собираем JAR RUN ./gradlew bootJar --no-daemon # Этап запуска FROM eclipse-temurin:17-jre-alpine WORKDIR /app # Создаём пользователя для безопасности RUN addgroup -S appgroup && adduser -S appuser -G appgroup # Копируем JAR из builder COPY --from=builder /app/build/libs/*.jar app.jar # Переключаемся на непривилегированного пользователя USER appuser EXPOSE 8080 ENTRYPOINT ["java", "-jar", "app.jar"]