32 lines
1.3 KiB
Docker
32 lines
1.3 KiB
Docker
# 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"] |