diff --git a/Dockerfile b/Dockerfile index 200c19e..c4f924f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ # 1. Этап сборки (Build stage) FROM eclipse-temurin:17-jdk-jammy AS build -# Устанавливаем Node.js и npm один раз +# Устанавливаем 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 \ @@ -9,26 +9,23 @@ RUN apt-get update && apt-get install -y curl \ WORKDIR /app -# Сначала копируем только файлы Gradle для кэширования слоев -COPY gradlew . -COPY gradle gradle -RUN chmod +x gradlew - -# Копируем всё остальное (убедись, что .gitignore разрешает папку src и т.д.) +# Копируем абсолютно все файлы проекта (включая папку gradle и gradlew) COPY . . -# Запускаем сборку ОДИН раз. -# Это соберет и фронтенд, и бэкенд в один JAR +# КРИТИЧЕСКИ ВАЖНО: устанавливаем права сразу перед запуском сборки +# Это лечит ошибку "Permission denied" (exit code: 126) +RUN chmod +x gradlew + +# Запускаем сборку один раз RUN ./gradlew copyAngularBuild_prod bootJar -x test --no-daemon -# 2. Финальный образ (Runtime stage) +# 2. Финальный легковесный образ (Runtime stage) FROM eclipse-temurin:17-jre-jammy WORKDIR /app -# Забираем собранный JAR из папки build/libs этапа build +# Копируем собранный JAR из первого этапа COPY --from=build /app/build/libs/*.jar app.jar EXPOSE 8080 - -# Запускаем с активным профилем prod +# Используем профиль prod для подхвата настроек базы в Хельсинки ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=prod", "app.jar"] \ No newline at end of file