FROM python:3.13.7-slim AS builder

# Устанавливаем системные библиотеки для GIS, Postgres, сборки пакетов
RUN apt-get update && apt-get install -y --no-install-recommends \
    build-essential \
    gdal-bin libgdal-dev \
    libproj-dev proj-bin \
    libpq-dev \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /app

# Устанавливаем uv пакетно-менеджер глобально
RUN pip install --no-cache-dir uv

# Копируем зависимости
COPY pyproject.toml uv.lock ./

# Синхронизируем зависимости (включая prod + dev), чтобы билдить
RUN uv sync --locked

# Копируем весь код приложения
COPY . .

# --- рантайм-стадия — минимальный образ для продакшена ---
FROM python:3.13.7-slim

WORKDIR /app

# Устанавливаем только runtime-системные библиотеки
RUN apt-get update && apt-get install -y --no-install-recommends \
    gdal-bin \
    libproj-dev proj-bin \
    libpq5 \
    postgresql-client \
    && rm -rf /var/lib/apt/lists/*

# Копируем всё из билдера
COPY --from=builder /usr/local/lib/python3.13 /usr/local/lib/python3.13
COPY --from=builder /usr/local/bin /usr/local/bin
COPY --from=builder /app /app

# Загружаем переменные окружения из .env (см. docker-compose)
ENV PYTHONUNBUFFERED=1 \
    PATH="/usr/local/bin:$PATH"

# Делаем entrypoint.sh исполняемым
RUN chmod +x /app/entrypoint.sh

EXPOSE 8000

# Используем entrypoint для инициализации (миграции, статика)
ENTRYPOINT ["/app/entrypoint.sh"]