Spaces:
Runtime error
Runtime error
| # ================================================================= | |
| # STAGE 1: BUILDER - Stage để cài đặt các dependencies nặng | |
| # ================================================================= | |
| FROM python:3.10 as builder | |
| # Cập nhật và cài đặt các gói hệ thống cho việc build | |
| RUN apt-get update && apt-get install -y --no-install-recommends \ | |
| build-essential \ | |
| && apt-get clean \ | |
| && rm -rf /var/lib/apt/lists/* | |
| WORKDIR /app | |
| # Tạo và kích hoạt venv | |
| RUN python -m venv /opt/venv | |
| ENV PATH="/opt/venv/bin:$PATH" | |
| # Sao chép file requirements trước để tận dụng Docker layer caching | |
| COPY requirements.txt . | |
| # Cài đặt thư viện Python | |
| RUN pip install --no-cache-dir --upgrade pip && \ | |
| pip install --no-cache-dir -r requirements.txt | |
| # ================================================================= | |
| # STAGE 2: FINAL - Stage cuối cùng, nhỏ gọn để chạy ứng dụng | |
| # ================================================================= | |
| FROM python:3.10-slim | |
| # Cài đặt chỉ các dependencies hệ thống cần thiết cho RUNTIME | |
| RUN apt-get update && apt-get install -y --no-install-recommends \ | |
| poppler-utils \ | |
| libgl1-mesa-glx \ | |
| libglib2.0-0 \ | |
| && apt-get clean \ | |
| && rm -rf /var/lib/apt/lists/* | |
| WORKDIR /app | |
| # Sao chép môi trường ảo từ stage builder | |
| COPY --from=builder /opt/venv /opt/venv | |
| # Kích hoạt virtual environment | |
| ENV PATH="/opt/venv/bin:$PATH" | |
| # --- PHẦN SỬA ĐỔI QUAN TRỌNG --- | |
| # Thiết lập các biến môi trường quan trọng | |
| # 1. **SỬA LẠI ĐÂY**: Trỏ thư mục cache vào /tmp, nơi ứng dụng có quyền ghi | |
| # Điều này sẽ sửa lỗi "Permission denied" | |
| ENV HF_HOME=/tmp/huggingface_cache | |
| ENV SENTENCE_TRANSFORMERS_HOME=/tmp/huggingface_cache | |
| # 2. Tạo thư mục cache và cấp quyền (thực hành tốt) | |
| RUN mkdir -p /tmp/huggingface_cache && chmod 777 /tmp/huggingface_cache | |
| # 3. Các biến môi trường khác giữ nguyên | |
| ENV HF_HUB_DISABLE_SYMLINKS_WARNING=1 | |
| ENV PYTHONUNBUFFERED=1 | |
| # --- KẾT THÚC PHẦN SỬA ĐỔI --- | |
| # Sao chép toàn bộ mã nguồn của ứng dụng | |
| COPY . . | |
| # Tải trước (pre-download/bake) các model vào trong image | |
| # Bây giờ các model sẽ được lưu vào /tmp/huggingface_cache bên trong image | |
| RUN python -c "from sentence_transformers import SentenceTransformer; SentenceTransformer('bkai-foundation-models/vietnamese-bi-encoder')" | |
| RUN python -c "from langchain_community.cross_encoders import HuggingFaceCrossEncoder; HuggingFaceCrossEncoder(model_name='cross-encoder/ms-marco-MiniLM-L-6-v2')" | |
| # Mở cổng | |
| EXPOSE 7860 | |
| # Lệnh chạy ứng dụng | |
| CMD ["gunicorn", "-w", "2", "-k", "uvicorn.workers.UvicornWorker", "main:app", "--bind", "0.0.0.0:7860", "--timeout", "120"] |