ecom-qa-bert-2 / Dockerfile
rnyx's picture
Fix startup timeout
6a6a6ef
Raw
History Blame Contribute Delete
3.1 kB
# ════════════════════════════════════════════════════════════════════════════
# EcomQA — Dockerfile
# Fix #7: Model weights baked in at build time → zero cold-start at runtime
# ════════════════════════════════════════════════════════════════════════════
FROM python:3.11-slim AS base
# System deps for Playwright + PyTorch
RUN apt-get update && apt-get install -y --no-install-recommends \
gcc g++ libffi-dev curl git \
# Chromium runtime dependencies
libnss3 libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm2 \
libxkbcommon0 libxcomposite1 libxdamage1 libxfixes3 libxrandr2 \
libgbm1 libasound2 \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
# ── Install Python dependencies ───────────────────────────────────────────────
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# ── Install Playwright browser (baked in) ────────────────────────────────────
RUN playwright install chromium --with-deps
# ── Pre-download all HuggingFace model weights (Fix #7) ──────────────────────
# This runs during image build so the container starts instantly.
COPY scripts/download_models.py scripts/
RUN python scripts/download_models.py --skip-playwright
# ── Copy application source ────────────────────────────────────────────────────
COPY . .
# ── Create data directory for SQLite ─────────────────────────────────────────
RUN mkdir -p data
# ── Environment ───────────────────────────────────────────────────────────────
ENV PYTHONPATH=/app
ENV PYTHONUNBUFFERED=1
ENV TRANSFORMERS_CACHE=/app/.hf_cache
ENV HF_HOME=/app/.hf_cache
EXPOSE 7860
# ── Healthcheck ───────────────────────────────────────────────────────────────
HEALTHCHECK --interval=30s --timeout=10s --start-period=60s \
CMD curl -f http://localhost:7860/ || exit 1
# ── Start ─────────────────────────────────────────────────────────────────────
CMD ["gunicorn", "--bind", "0.0.0.0:7860", "--workers", "1", "--timeout", "300", "src.app:app"]