# ==========================================
# Stage 1: Build dependencies
# ==========================================
FROM python:3.11-slim AS builder

ENV PYTHONDONTWRITEBYTECODE=1 \
    PYTHONUNBUFFERED=1

WORKDIR /app

# بهینه‌سازی ۱: استفاده از کش سیستم‌عامل برای apt
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
    --mount=type=cache,target=/var/lib/apt,sharing=locked \
    apt-get update && apt-get install -y --no-install-recommends \
    build-essential \
    libpq-dev

RUN python -m venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH"

COPY requirements.txt .

# بهینه‌سازی ۲: استفاده از مکانیزم کش BuildKit برای pip
RUN --mount=type=cache,target=/root/.cache/pip \
    pip install --default-timeout=1000 -i https://package-mirror.liara.ir/repository/pypi/simple -r requirements.txt

# ==========================================
# Stage 2: Final Production Image
# ==========================================
FROM python:3.11-slim

ENV PYTHONDONTWRITEBYTECODE=1 \
    PYTHONUNBUFFERED=1 \
    PATH="/opt/venv/bin:$PATH"

WORKDIR /app

# بهینه‌سازی ۳: ساخت کاربر سیستم غیر ریشه در بالاترین بخش برای حفظ کِش داکر
RUN useradd -m -u 1000 django

# بهینه‌سازی ۴: استفاده از کش apt و ساخت دایرکتوری‌ها به صورت یکپارچه
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
    --mount=type=cache,target=/var/lib/apt,sharing=locked \
    apt-get update && apt-get install -y --no-install-recommends \
    libpq5 \
    supervisor && \
    mkdir -p /app/staticfiles /app/mediafiles /etc/supervisor /var/log/supervisor && \
    chown -R django:django /app /etc/supervisor /var/log/supervisor

# کپی کردن و واگذاری مالکیت محیط مجازی به کاربر django
COPY --from=builder --chown=django:django /opt/venv /opt/venv

# 🛠️ اصلاح کلیدی: کپی مستقیم کانفیگ سوپروایزر به پوشه مقصد سیستم با دستور بومی داکر (رفع خطای بیلد)
COPY --chown=django:django supervisord.conf /etc/supervisor/supervisord.conf

# کپی کردن تمام کدهای پروژه با مالکیت کاربر محدود شده
COPY --chown=django:django . .

# حل مشکل خطای Permission Denied اسکریپت ورود
RUN chmod +x /app/entrypoint.sh

# سوئیچ به کاربر غیر ریشه برای امنیت پروداکشن
USER django

# اکسپوز پورت وب‌سرور برای وب‌پروکسی Coolify
EXPOSE 8000

# نقطه ورود اصلی کانتینر
ENTRYPOINT ["/app/entrypoint.sh"]