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

ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1

WORKDIR /app

RUN apt-get update && apt-get install -y --no-install-recommends \
    build-essential \
    libpq-dev \
    && rm -rf /var/lib/apt/lists/*

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

COPY requirements.txt .
#RUN pip install --no-cache-dir -r requirements.txt
RUN pip install --no-cache-dir --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
ENV PYTHONUNBUFFERED=1
ENV PATH="/opt/venv/bin:$PATH"

WORKDIR /app

# نصب کتابخانه‌های سیستم‌عامل برای زمان اجرا + ابزار ارزشمند supervisor
RUN apt-get update && apt-get install -y --no-install-recommends \
    libpq5 \
    supervisor \
    && rm -rf /var/lib/apt/lists/*

# کپی کردن لایه پاکیزه پکیج‌ها از استیج اول
COPY --from=builder /opt/venv /opt/venv

# تمهیدات امنیتی: ساخت کاربر سیستم غیر ریشه
RUN useradd -m -u 1000 django

# ساخت دایرکتوری‌های مورد نیاز و واگذاری مالکیت به کاربر django
RUN mkdir -p /app/staticfiles /app/mediafiles /etc/supervisor && \
    chown -R django:django /app /etc/supervisor

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

# اجرایی کردن اسکریپت اینتری‌پوینت
RUN chmod +x /app/entrypoint.sh

# سوئیچ به کاربر غیر ریشه
USER django

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

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