| FROM python:3.11-slim | |
| WORKDIR /code | |
| COPY requirements.txt . | |
| RUN pip install --no-cache-dir -r requirements.txt | |
| # HF_HOME을 먼저 설정 → snapshot_download가 올바른 위치에 저장 | |
| ENV HF_HOME=/code/cache \ | |
| TRANSFORMERS_CACHE=/code/cache \ | |
| PORT=7860 | |
| # 빌드 시점에 모델 다운로드 (이 레이어는 캐시됨 — requirements.txt/Dockerfile 변경 시만 재실행) | |
| # 코드(app.py, index.html 등)만 바꾸면 이 레이어는 그대로 재사용됨 | |
| RUN python -c "\ | |
| from huggingface_hub import snapshot_download; \ | |
| snapshot_download( \ | |
| 'onnx-community/EXAONE-3.5-2.4B-Instruct', \ | |
| allow_patterns=[ \ | |
| 'config.json', \ | |
| 'generation_config.json', \ | |
| 'tokenizer.json', \ | |
| 'tokenizer_config.json', \ | |
| 'special_tokens_map.json', \ | |
| 'onnx/model_q4.onnx', \ | |
| 'onnx/model_q4.onnx_data', \ | |
| ] \ | |
| )" | |
| COPY . . | |
| EXPOSE 7860 | |
| CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"] | |