# Hugging Face Spaces용 Lily LLM API Server Dockerfile (모델 사전 다운로드 버전) FROM python:3.11-slim # Hugging Face Spaces 환경 변수 ENV GRADIO_SERVER_NAME="0.0.0.0" ENV GRADIO_SERVER_PORT=7860 ENV PYTHONPATH=/app ENV PYTHONUNBUFFERED=1 ENV TOKENIZERS_PARALLELISM=false # 작업 디렉토리 설정 WORKDIR /app # 시스템 의존성 설치 RUN apt-get update && apt-get install -y \ build-essential \ curl \ git \ wget \ ffmpeg \ libsm6 \ libxext6 \ libfontconfig1 \ libxrender1 \ libgl1-mesa-glx \ && rm -rf /var/lib/apt/lists/* # Python 의존성 설치 (캐싱 최적화) COPY requirements_full.txt requirements.txt RUN pip install --no-cache-dir --upgrade pip RUN pip install --no-cache-dir -r requirements.txt # NLTK 데이터 다운로드 RUN python -c "import nltk; nltk.download('punkt'); nltk.download('punkt_tab'); nltk.download('averaged_perceptron_tagger'); nltk.download('maxent_ne_chunker'); nltk.download('words'); nltk.download('stopwords')" # 필요한 디렉토리 생성 RUN mkdir -p /app/data /app/logs /app/models /app/uploads /app/vector_stores /app/temp /app/cache/transformers /app/cache/huggingface # Hugging Face 캐시 디렉토리 환경 변수 설정 ENV TRANSFORMERS_CACHE=/app/cache/transformers ENV HF_HOME=/app/cache/huggingface ENV HF_HUB_CACHE=/app/cache/huggingface # 모델 다운로드 스크립트 복사 및 실행 COPY download_model.py /app/download_model.py RUN python /app/download_model.py # 애플리케이션 코드 복사 COPY . . # 권한 설정 RUN chmod +x /app/*.py # Hugging Face Spaces용 앱 시작점 생성 COPY app_huggingface.py /app/app_huggingface.py # 포트 노출 (Hugging Face Spaces는 7860 포트 사용) EXPOSE 7860 # 헬스체크 HEALTHCHECK --interval=30s --timeout=30s --start-period=60s --retries=3 \ CMD curl -f http://localhost:7860/health || exit 1 # 애플리케이션 실행 CMD ["python", "app_huggingface.py"]