studycraft / Dockerfile
Joedroid's picture
fix: answer key timeout, frontend error handling, SonarLint issues
c770674
Raw
History Blame Contribute Delete
1.65 kB
FROM python:3.12-slim-bookworm
WORKDIR /app
# System deps + uv + setuptools (merged to reduce layers)
RUN apt-get update && apt-get install -y --no-install-recommends \
libnss3 libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm2 \
libxkbcommon0 libxcomposite1 libxdamage1 libxrandr2 libgbm1 \
libpango-1.0-0 libcairo2 libasound2 libxshmfence1 \
libcairo2-dev libpango1.0-dev pkg-config \
gcc python3-dev \
ffmpeg \
fonts-dejavu-core \
&& rm -rf /var/lib/apt/lists/* \
&& pip install --no-cache-dir uv "setuptools<81"
# Copy project files
COPY pyproject.toml uv.lock .python-version README.md ./
COPY src/ src/
# CPU-only PyTorch — must be set BEFORE uv sync so it's respected during resolution
ENV UV_TORCH_BACKEND=cpu
ENV UV_NO_BUILD_ISOLATION=0
# Install deps, Playwright, setuptools pin, and create runtime dirs (merged to reduce layers)
RUN uv sync --no-dev --extra pdf --extra tts --extra video \
&& uv run playwright install chromium \
&& uv run pip install --no-cache-dir "setuptools<81" "Pillow>=10.0" \
&& mkdir -p /app/output /app/uploads /app/rag_index \
&& chmod -R 777 /app/output /app/uploads /app/rag_index
ENV PATH="/app/.venv/bin:$PATH"
ENV PYTHONUNBUFFERED=1
ENV PYTHONIOENCODING=utf-8
# Accept HF_TOKEN and other secrets as build/runtime args
ARG HF_TOKEN=""
ENV HF_TOKEN=${HF_TOKEN}
# OPENROUTER_API_KEY and STUDYCRAFT_WEB_TOKEN should be set at runtime via docker run -e
# or in docker-compose.yml environment section
VOLUME ["/app/output", "/app/uploads", "/app/rag_index"]
ENV PORT=8000
EXPOSE ${PORT}
# rebuild trigger: faadedb
CMD ["studycraft-web", "--port", "8000"]