FROM python:3.12-slim
COPY --from=ghcr.io/astral-sh/uv:0.12.10 /uv /usr/local/bin/uv
ENV PYTHONUNBUFFERED=1 UV_COMPILE_BYTECODE=1 UV_LINK_MODE=copy PATH="/app/.venv/bin:$PATH" DATA_DIR=/data HF_HOME=/data/models
ENV PLAYWRIGHT_BROWSERS_PATH=/opt/playwright
WORKDIR /app
COPY pyproject.toml uv.lock ./
RUN uv sync --frozen --no-dev
RUN playwright install --with-deps --only-shell chromium && chmod -R a+rX /opt/playwright
COPY app app
COPY models models
COPY crawler crawler
COPY embeddings embeddings
COPY search search
COPY workers workers
COPY discovery discovery
COPY safety safety
COPY operations operations
COPY config config
COPY config.yaml config.yaml
COPY README.md README.md
COPY templates templates
COPY static static
COPY browser-extension browser-extension
RUN useradd --create-home --uid 10001 imgsrx && mkdir -p /data/thumbnails /data/models /data/tmp && chown -R imgsrx:imgsrx /data
USER imgsrx
EXPOSE 8000
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
