PRMSChallengeOct / dockerfile
vineelagampa's picture
Upload dockerfile
366e35d verified
raw
history blame
1.48 kB
# syntax=docker/dockerfile:1.6
# ===== Python base (3.9) =====
ARG PY_BASE=python:3.9-slim
FROM ${PY_BASE}
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
PIP_NO_CACHE_DIR=1 \
TOKENIZERS_PARALLELISM=false \
OMP_NUM_THREADS=1 \
TRANSFORMERS_CACHE=/cache/hf
# ---- System deps (Tesseract + libs OpenCV wheels expect) ----
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates curl \
tesseract-ocr tesseract-ocr-eng tesseract-ocr-osd \
libgl1 libglib2.0-0 \
&& rm -rf /var/lib/apt/lists/*
# Tesseract language data path (Debian/Ubuntu)
ENV TESSDATA_PREFIX=/usr/share/tesseract-ocr/4.00/tessdata
# ---- App setup ----
WORKDIR /app
# Install Python deps first for better layer caching
COPY requirements.txt .
RUN python -m pip install --upgrade pip setuptools wheel \
&& pip install -r requirements.txt \
&& pip install https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.6.0/en_core_web_sm-3.6.0-py3-none-any.whl \
&& python -m spacy validate
# Copy the rest of your app
COPY . .
# Writable caches (for HF/torch/tmp)
RUN mkdir -p /cache/hf /tmp && chmod -R 777 /cache /tmp
# App port & healthcheck
ENV PORT=8000
EXPOSE 8000
HEALTHCHECK --interval=30s --timeout=10s --retries=3 \
CMD curl -fsS "http://127.0.0.1:${PORT}/health" || exit 1
# Use $PORT when present (Render sets it), default to 8000 locally
CMD ["sh","-c","uvicorn backend:app --host 0.0.0.0 --port ${PORT:-8000}"]