FROM python:3.11-slim ENV PYTHONUNBUFFERED=1 \ PIP_NO_CACHE_DIR=1 \ HF_HOME=/home/user/app/.models \ HF_HUB_DISABLE_TELEMETRY=1 \ NUKKI_HOST=0.0.0.0 \ NUKKI_PORT=7860 # opencv / pillow 런타임 의존 RUN apt-get update && apt-get install -y --no-install-recommends \ libgl1 libglib2.0-0 && rm -rf /var/lib/apt/lists/* RUN useradd -m -u 1000 user USER user ENV PATH=/home/user/.local/bin:$PATH WORKDIR /home/user/app # CPU 전용 torch 먼저 (Spaces 무료는 GPU 없음 → CUDA 빌드 불필요) COPY --chown=user requirements.txt . RUN pip install --upgrade pip && \ pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu && \ pip install -r requirements.txt COPY --chown=user . . # 모델을 이미지에 미리 구워넣어 cold start 시 재다운로드 방지 (실패해도 런타임에 받음) RUN python -c "from app.registry import REGISTRY; REGISTRY.segmenter('general'); REGISTRY.matte('small'); print('prewarm ok')" || echo "prewarm skipped" EXPOSE 7860 CMD ["uvicorn", "app.server:app", "--host", "0.0.0.0", "--port", "7860"]