FROM python:3.14-slim ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ PIP_NO_CACHE_DIR=1 \ APP_DIR=/home/richie/dotfiles \ EBOOK_SEARCH_HOST=0.0.0.0 \ EBOOK_SEARCH_PORT=8070 \ EBOOK_SEARCH_BM25_INDEX_DIR=/data/bm25 WORKDIR ${APP_DIR} RUN apt-get update \ && apt-get install -y --no-install-recommends build-essential curl \ && rm -rf /var/lib/apt/lists/* COPY pyproject.toml README.md LICENSE ./ COPY python ./python RUN python -m pip install --upgrade pip \ && python -m pip install \ "alembic" \ "beautifulsoup4" \ "bm25s" \ "ebooklib" \ "fastapi" \ "httpx" \ "jinja2" \ "pgvector" \ "psycopg[binary]" \ "pydantic" \ "pydantic-settings" \ "python-multipart" \ "sqlalchemy" \ "tiktoken" \ "typer" \ "uvicorn[standard]" \ "yake" \ && python -m pip install --no-deps --editable "${APP_DIR}" RUN useradd --create-home --uid 10001 app \ && mkdir -p /data \ && chown -R app:app /home/richie /data USER app EXPOSE 8070 CMD ["sh", "-c", "exec python -m python.ebook_search.api.main --host \"${EBOOK_SEARCH_HOST}\" --port \"${EBOOK_SEARCH_PORT}\" --log-level \"${EBOOK_SEARCH_LOG_LEVEL:-INFO}\""]