ai-certificate / Dockerfile
jo8780's picture
Add poppler-utils for PDF processing
d6c9068
Raw
History Blame Contribute Delete
1.6 kB
# Use a Python base image
FROM python:3.11-slim
# Install system dependencies (Tesseract, OpenCV support, Redis server, poppler for pdf2image)
RUN apt-get update && apt-get install -y \
tesseract-ocr \
tesseract-ocr-amh \
libgl1 \
libglib2.0-0 \
libgomp1 \
redis-server \
poppler-utils \
&& rm -rf /var/lib/apt/lists/*
# Create a non-root user (Hugging Face Spaces runs containers as UID 1000)
RUN useradd -m -u 1000 user
USER user
ENV HOME=/home/user \
PATH=/home/user/.local/bin:$PATH \
HF_HOME=/home/user/.cache/huggingface \
TRANSFORMERS_CACHE=/home/user/.cache/huggingface \
PADDLE_HOME=/home/user/.paddleocr \
REDIS_URL=redis://127.0.0.1:6379/0
WORKDIR $HOME/app
# Copy requirements and install as the non-root user.
# Install requirements.txt first (full deps), then requirements_paddle.txt (lower-bound paddle pins).
COPY --chown=user requirements.txt requirements_paddle.txt ./
RUN pip install --no-cache-dir --user --upgrade pip && \
pip install --no-cache-dir --user -r requirements.txt && \
pip install --no-cache-dir --user -r requirements_paddle.txt
# Copy the rest of the code
COPY --chown=user . .
EXPOSE 8000
# Start redis-server in the background (writes pid/log to /tmp so non-root user can write),
# then launch uvicorn. HF Spaces sets $PORT to the app_port declared in README.md (8000).
CMD ["sh", "-c", "redis-server --port 6379 --dir /tmp --pidfile /tmp/redis.pid --logfile /tmp/redis.log --daemonize yes && exec uvicorn app.main:app --host 0.0.0.0 --port ${PORT:-8000} --workers 1 --timeout-keep-alive 60"]