FROM python:3.12-slim

ENV PYTHONDONTWRITEBYTECODE=1 \
    PYTHONUNBUFFERED=1 \
    DEBIAN_FRONTEND=noninteractive

WORKDIR /app

# 安装 ffmpeg、编译工具及 PostgreSQL 客户端开发库
RUN apt-get update && apt-get install -y --no-install-recommends \
    ffmpeg \
    libpq-dev \
    gcc \
    curl \
    && rm -rf /var/lib/apt/lists/*

# 安装 Python 依赖
RUN pip install --no-cache-dir --upgrade pip && \
    pip install --no-cache-dir \
    "Django>=5.2,<5.3" \
    "djangorestframework>=3.15,<3.16" \
    "adrf>=0.1.9" \
    "granian>=2.0,<3.0" \
    "psycopg[binary]>=3.2,<4.0" \
    "redis>=5.0,<6.0" \
    "channels>=4.1,<5.0" \
    "channels-redis>=4.2" \
    "daphne>=4.1" \
    "django-cors-headers>=4.4" \
    "django-redis>=5.4" \
    "Pillow>=10.4" \
    "python-decouple>=3.8" \
    "argon2-cffi>=23.1" \
    "PyJWT>=2.9"

COPY . /app/

RUN mkdir -p /app/media /app/staticfiles

EXPOSE 8000

# 启动前执行 migrate，随后由 Granian 高性能 ASGI 服务器驱动 Django
CMD ["sh", "-c", "python manage.py migrate --noinput && granian --interface asgi --host 0.0.0.0 --port 8000 --workers 2 config.asgi:application"]
