# Multi-stage Docker build для оптимального размера
FROM python:3.11-slim as base

# Установка системных зависимостей
RUN apt-get update && apt-get install -y \
    gcc \
    postgresql-client \
    curl \
    && rm -rf /var/lib/apt/lists/*

# Создание пользователя приложения
RUN useradd --create-home --shell /bin/bash app

# Установка рабочей директории
WORKDIR /app

# Копирование и установка Python зависимостей
COPY requirements.txt .
RUN pip install --no-cache-dir --upgrade pip && \
    pip install --no-cache-dir -r requirements.txt

# Production stage
FROM base as production

# Build arguments для метаданных
ARG BUILD_VERSION=latest
ARG BUILD_DATE
ARG VCS_REF

# Метаданные образа
LABEL org.opencontainers.image.title="CatLink Backend" \
      org.opencontainers.image.description="Django REST API для CatLink" \
      org.opencontainers.image.version="$BUILD_VERSION" \
      org.opencontainers.image.created="$BUILD_DATE" \
      org.opencontainers.image.revision="$VCS_REF" \
      org.opencontainers.image.source="https://github.com/smartsoltech/links"

# Копирование приложения
COPY --chown=app:app . .

# Создание необходимых директорий
RUN mkdir -p staticfiles media logs && \
    chown -R app:app /app

# Переключение на пользователя приложения
USER app

# Сбор статических файлов
RUN python manage.py collectstatic --noinput

# Переменные окружения для продакшена
ENV PYTHONPATH="/app" \
    PYTHONUNBUFFERED=1 \
    DJANGO_SETTINGS_MODULE="backend.settings" \
    PORT=8000

# Health check
HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 \
    CMD curl -f http://localhost:$PORT/api/health/ || exit 1

# Открытие порта
EXPOSE $PORT

# Команда запуска
CMD ["gunicorn", "--bind", "0.0.0.0:8000", "--workers", "4", "--worker-class", "sync", "--worker-connections", "1000", "--max-requests", "1000", "--max-requests-jitter", "100", "backend.wsgi:application"]