File size: 2,295 Bytes
8e34308
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# ============================================================
#  WorkWise Backend - Lightweight (GPU Optional) Build
# ============================================================

# ---- 1️⃣ Base Image ----------------------------------------------------------
# Use CPU-friendly base by default; uncomment CUDA base if you need GPU
FROM python:3.10-slim AS base
# FROM nvidia/cuda:12.3.2-cudnn9-runtime-ubuntu22.04 AS base   # (optional GPU)

ENV DEBIAN_FRONTEND=noninteractive \
    PYTHONUNBUFFERED=1 \
    PIP_NO_CACHE_DIR=1 \
    PYTHONPATH=/home/user/app

# ---- 2️⃣ System Dependencies -------------------------------------------------
RUN apt-get update && apt-get install -y --no-install-recommends \
        git curl build-essential libgl1 libglib2.0-0 ffmpeg \
        && rm -rf /var/lib/apt/lists/*

# ---- 3️⃣ Create Non-Root User ----------------------------------------------
RUN useradd -m -u 1000 user
WORKDIR /home/user/app
USER user

# ---- 4️⃣ Install Python Dependencies ----------------------------------------
COPY --chown=user:user requirements.txt .
RUN pip install --upgrade pip \
    && pip install -r requirements.txt \
    && pip install sentence-transformers faiss-cpu gradio[oauth] uvicorn fastapi \
    && pip uninstall -y torch torchvision torchaudio torchtext torchdata 2>/dev/null || true

# ---- 5️⃣ Copy Application Source --------------------------------------------
COPY --chown=user:user . .

# ---- 6️⃣ Environment Variables ----------------------------------------------
ENV HF_HOME=/home/user/.cache/huggingface \
    TRANSFORMERS_CACHE=/home/user/.cache/huggingface/transformers \
    OMP_NUM_THREADS=4 \
    TOKENIZERS_PARALLELISM=false \
    HF_HUB_DISABLE_SYMLINKS_WARNING=1

# ---- 7️⃣ Healthcheck ---------------------------------------------------------
HEALTHCHECK CMD curl -f http://localhost:7860/health || exit 1

# ---- 7️⃣ Cleanup  ---------------------------------------------------------
RUN rm -rf /home/user/.cache/huggingface/hub/models--*mistral*
RUN rm -rf /home/user/.cache/pip

RUN du -sh /home/user/.cache/huggingface || true

# ---- 8️⃣ Entry Point ---------------------------------------------------------
EXPOSE 7860
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "7860"]