SmartHire-AI / Dockerfile
Vishu2006's picture
fix: Dockerfile use requirements_api.txt instead of hardcoded versions
5b9d87c
Raw
History Blame Contribute Delete
1.84 kB
# ─────────────────────────────────────────────────────────────
# SmartHire AI β€” Dockerfile
# Hugging Face Spaces (Docker SDK) compatible
# Port: 7860 (required by HF Spaces)
# Optimized: CPU-only torch, pinned deps, model pre-baked
# ─────────────────────────────────────────────────────────────
FROM python:3.10-slim
# HF Spaces requires user 1000
RUN useradd -m -u 1000 user
USER user
ENV HOME=/home/user \
PATH=/home/user/.local/bin:$PATH \
PYTHONUNBUFFERED=1 \
PYTHONDONTWRITEBYTECODE=1 \
HF_HOME=/home/user/.cache/huggingface \
TRANSFORMERS_CACHE=/home/user/.cache/huggingface \
SENTENCE_TRANSFORMERS_HOME=/home/user/.cache/sentence_transformers
WORKDIR $HOME/app
# Step 1: Install CPU-only torch first (biggest package, cached as own layer)
RUN pip install --no-cache-dir torch==2.1.0+cpu \
--extra-index-url https://download.pytorch.org/whl/cpu
# Step 2: Install remaining dependencies
COPY --chown=user requirements_api.txt .
RUN pip install --no-cache-dir -r requirements_api.txt
# Step 3: Copy project source
COPY --chown=user src/ ./src/
COPY --chown=user api/ ./api/
# Step 4: Pre-download and cache embedding model into image
# This means cold starts never need to download the model
RUN python -c "\
from sentence_transformers import SentenceTransformer; \
model = SentenceTransformer('sentence-transformers/all-MiniLM-L6-v2'); \
print('βœ“ Model cached successfully')" || echo "Model pre-download skipped"
# HF Spaces requires port 7860
EXPOSE 7860
# Start FastAPI
CMD ["uvicorn", "api.main:app", "--host", "0.0.0.0", "--port", "7860"]