# Multi-stage build для фронтенда
# Stage 1: Сборка приложения
FROM node:18-alpine AS builder

WORKDIR /app

# Копируем файлы зависимостей
COPY package*.json ./

# Устанавливаем зависимости
RUN npm ci && npm cache clean --force

# Копируем исходный код
COPY . .

# Переменные окружения для сборки
# VITE_API_URL используется в runtime через import.meta.env
ARG VITE_API_URL
ENV VITE_API_URL=${VITE_API_URL}

# Собираем приложение
RUN npm run build

# Stage 2: Production образ с nginx
FROM nginx:alpine

# Устанавливаем wget и gettext (для envsubst)
RUN apk add --no-cache wget gettext

# Копируем собранные файлы из builder stage
COPY --from=builder /app/dist /usr/share/nginx/html

# Копируем шаблон конфигурации nginx
COPY nginx.conf.template /etc/nginx/templates/default.conf.template

# Переменные окружения для nginx конфигурации (значения по умолчанию)
# Если бэкенд использует HTTPS, используйте https://backend:443
ENV BACKEND_URL=https://backend:443
# BACKEND_SSL_VERIFY: "on" = проверка включена, "off" = проверка отключена (по умолчанию отключена для самоподписанных сертификатов)
ENV BACKEND_SSL_VERIFY=off

# Открываем порт 80
EXPOSE 80

# Healthcheck
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
    CMD wget --no-verbose --tries=1 --spider http://localhost/ || exit 1

# Запускаем nginx
CMD ["nginx", "-g", "daemon off;"]
