# 1. Этап сборки (Build stage) на базе JDK 26 FROM eclipse-temurin:26-jdk-alpine AS build WORKDIR /app # Устанавливаем Node.js и npm, так как плагин node-gradle может попытаться # скачать или использовать системный node (или настроим его под контейнер) RUN apk add --no-cache nodejs npm curl bash # Копируем всё содержимое проекта COPY . . # Даем права на выполнение Gradle Wrapper RUN chmod +x gradlew # Запускаем кастомные gradle-таски для сборки фронтенда и упаковки бэкенда. # Плагин node-gradle сам установит нужную версию node/npm внутри сборщика Gradle, # либо подхватит системный. Используем вашу задачу copyAngularBuild. RUN ./gradlew copyAngularBuild -x test --no-daemon RUN ./gradlew bootJar -x test --no-daemon # 2. Финальный образ (Runtime stage) - легкий образ с Java 26 JRE FROM eclipse-temurin:26-jre-alpine WORKDIR /app # Копируем собранный Spring Boot jar-файл из этапа сборки COPY --from=build /app/build/libs/*.jar app.jar EXPOSE 8080 ENTRYPOINT ["java", "-jar", "app.jar"]