# goodNews web/API image.
#
# The SQLite database is NOT baked into the image — mount it at /data so the API
# and the ingestion CLI (run separately, e.g. via cron on the host) share one
# file. Build:  docker build -t goodnews .
# Run:    docker run -p 8000:8000 -v /srv/goodnews/data:/data goodnews
FROM python:3.13-slim

WORKDIR /app

# Install dependencies first for better layer caching.
COPY pyproject.toml README.md ./
COPY goodnews ./goodnews
RUN pip install --no-cache-dir ".[web]"

# API reads the database from here; mount a host dir or named volume.
ENV GOODNEWS_DB=/data/goodnews.sqlite3
VOLUME ["/data"]

EXPOSE 8000
CMD ["uvicorn", "goodnews.api:app", "--host", "0.0.0.0", "--port", "8000"]
