# 1. Этап сборки (Build stage) FROM eclipse-temurin:17-jdk-jammy AS build # Устанавливаем Node.js и npm для сборки фронтенда 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 # Копируем абсолютно все файлы проекта (включая папку gradle и gradlew) COPY . . # КРИТИЧЕСКИ ВАЖНО: устанавливаем права сразу перед запуском сборки # Это лечит ошибку "Permission denied" (exit code: 126) RUN chmod +x gradlew # Запускаем сборку один раз RUN ./gradlew copyAngularBuild_prod bootJar -x test --no-daemon # 2. Финальный легковесный образ (Runtime stage) FROM eclipse-temurin:17-jre-jammy WORKDIR /app # Копируем собранный JAR из первого этапа COPY --from=build /app/build/libs/*.jar app.jar EXPOSE 8080 # Используем профиль prod для подхвата настроек базы в Хельсинки ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=prod", "app.jar"]