# PyTorch 2.6.0 + CUDA 12.6 + cuDNN9
FROM pytorch/pytorch:2.6.0-cuda12.6-cudnn9-devel

# 기본 환경 변수
ENV DEBIAN_FRONTEND=noninteractive \
    HF_HOME=/workspace/.cache/huggingface \
    CUDA_HOME=/usr/local/cuda \
    LD_LIBRARY_PATH=/usr/local/cuda/lib64:${LD_LIBRARY_PATH} \
    PIP_DISABLE_PIP_VERSION_CHECK=1 \
    PYTHONUNBUFFERED=1

WORKDIR /workspace

# 필수 빌드 도구
RUN apt-get update && apt-get install -y --no-install-recommends \
      git build-essential ninja-build \
    && rm -rf /var/lib/apt/lists/*

# pip 툴업
RUN python -m pip install -U pip setuptools wheel packaging ninja

# (베이스 이미지에 torch 2.6.0이 이미 포함)
# torchvision/torchaudio 버전을 보장하려면 아래 라인을 사용하세요.
# cu126 인덱스가 없을 수 있으므로 실패해도 빌드가 계속되게 처리합니다.
RUN pip install --no-cache-dir \
      torchvision==0.21.0 torchaudio==2.6.0 \
      --extra-index-url https://download.pytorch.org/whl/cu126 || \
    echo "Skip reinstalling torchvision/torchaudio (fallback to base image)"

# 프로젝트 의존성 설치
COPY requirements.txt /tmp/requirements.txt
RUN pip install --no-cache-dir -r /tmp/requirements.txt

# vLLM 0.8.5 고정 (CUDA 12.x용 wheel 자동 선택)
RUN pip install --no-cache-dir vllm==0.8.5

# FlashAttention (CUDA 12.6에서 빌드)
RUN pip install --no-cache-dir flash-attn==2.7.3 --no-build-isolation

# 작업 디렉터리 유지
WORKDIR /workspace
