41 lines
1.4 KiB
Docker
41 lines
1.4 KiB
Docker
# 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"] |