diff --git a/Dockerfile b/Dockerfile index 348ef53..f4ebac6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,34 +1,31 @@ -# Используем образ с JDK и Node.js, так как Gradle будет вызывать npm +# 1. Сборка (Build stage) FROM eclipse-temurin:17-jdk-jammy AS build -# Установка Node.js (нужен для твоих задач buildAngular_prod) -RUN apt-get update && apt-get install -y curl && \ - curl -sL https://deb.nodesource.com/setup_18.x | bash - && \ - apt-get install -y nodejs +# Устанавливаем Node.js для Angular +RUN apt-get update && apt-get install -y curl \ + && curl -fsSL https://deb.nodesource.com/setup_18.x | bash - \ + && apt-get install -y nodejs \ + && apt-get clean WORKDIR /app -# 1. Сначала копируем файлы обертки Gradle + +# Копируем Gradle wrapper (эти файлы мы разблокировали в .gitignore) COPY gradlew . COPY gradle gradle - -# 2. Даем права на исполнение RUN chmod +x gradlew -# 3. Копируем исходники (включая Angular и Java части) +# Копируем исходники проекта COPY . . -# КРИТИЧЕСКИ ВАЖНО: принудительно даем права на выполнение -RUN chmod +x gradlew - -# Теперь запускаем сборку - теперь ошибки 126 (Permission denied) не будет -RUN ./gradlew copyAngularBuild_prod bootJar -x test -# 4. Теперь твоя "педаль" сработает +# Запускаем сборку: компилируем фронтенд, чистим статику и собираем JAR RUN ./gradlew copyAngularBuild_prod bootJar -x test -# Финальный легковесный образ +# 2. Финальный образ (Runtime stage) FROM eclipse-temurin:17-jre-jammy WORKDIR /app + +# Забираем только готовый результат из этапа сборки COPY --from=build /app/build/libs/*.jar app.jar EXPOSE 8080 -ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=production", "app.jar"] \ No newline at end of file +ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=prod", "app.jar"] \ No newline at end of file