# 1. Этап сборки (Build stage) # ОБНОВЛЕНО: Переходим на JDK 21 FROM eclipse-temurin:21-jdk-jammy AS build # Устанавливаем Node.js v20 (требование Angular CLI) RUN apt-get update && apt-get install -y curl \ && curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \ && apt-get install -y nodejs \ && apt-get clean RUN apt-get update && apt-get install -y docker.io WORKDIR /app # Копируем всё содержимое проекта COPY . . # Даем права на запуск Gradle RUN chmod +x gradlew # Устанавливаем зависимости фронтенда (с фиксом конфликтов версий) RUN cd jambotron-ui && npm install --legacy-peer-deps # Запускаем финальную сборку монолита # Заменяем одну общую команду на две последовательные RUN ./gradlew copyAngularBuild_prod --no-daemon RUN ./gradlew bootJar -x test --no-daemon # 2. Финальный образ (Runtime stage) FROM eclipse-temurin:21-jdk-jammy # Устанавливаем и докер, и плагин компоуза RUN apt-get update && \ apt-get install -y docker.io docker-compose-v2 && \ apt-get clean \ WORKDIR /app COPY --from=build /app/build/libs/*.jar app.jar EXPOSE 8080 ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=prod", "app.jar"]