FROM ghcr.io/astral-sh/uv:debian-slim AS installer

WORKDIR /app
COPY ./ /app

RUN uvx ruff check .

RUN uv export --no-dev -o requirements.txt && \
    uv pip install \
      --target /app/deps \
      -r requirements.txt

FROM python:3.14 AS run

WORKDIR /app
VOLUME /app/file
EXPOSE 8000
ENV HOST=0.0.0.0
ENV PYTHONPATH="/app/deps:$PYTHONPATH"
ENV APP_LEVEL="api"
ENV DB_URL=sqlite+aiosqlite:///file/db.sqlite

COPY --from=installer /app/deps /app/deps
COPY ./ .

CMD ["python", "captcha/cli.py", "api"]
