# --- Этап 1: Сборка Angular --- FROM node:20-alpine AS frontend-builder WORKDIR /app/ui COPY spring-angular-ui/package*.json ./ RUN npm install --legacy-peer-deps COPY spring-angular-ui/ ./ ENV NODE_OPTIONS="--max-old-space-size=2048" RUN npx ng build --configuration=production # --- Этап 2: Сборка Java (Gradle) --- FROM eclipse-temurin:21-jdk-alpine AS backend-builder WORKDIR /app COPY gradlew . COPY gradle gradle COPY build.gradle settings.gradle ./ RUN ./gradlew dependencies --no-daemon COPY . . # Копируем уже собранный фронтенд в static COPY --from=frontend-builder /app/ui/dist/spring-angular-ui /app/src/main/resources/static RUN ./gradlew bootJar -x test --no-daemon # --- Этап 3: Финальный образ --- FROM eclipse-temurin:21-jre-alpine WORKDIR /app COPY --from=backend-builder /app/build/libs/*.jar app.jar EXPOSE 8080 ENTRYPOINT ["java", "-jar", "app.jar"]