# km -- der Wissensdienst (spine/core#8). Benannt nach der Faehigkeit.
#
# Ein Prozess: HTTP-API + Takt (ziehen, einlesen, indexieren, einliefern).
# Die Ablage ist ein Git-Checkout auf dem Volume /data/ablage, der Index eine
# SQLite-Datei daneben. SilverBullet als Oberflaeche ist ein eigener Container
# auf demselben Volume (deploy/compose.yml), nicht Teil dieses Images.
FROM docker.io/library/python:3.13-slim

RUN apt-get update \
 && apt-get install -y --no-install-recommends git ca-certificates curl \
 && rm -rf /var/lib/apt/lists/*

WORKDIR /app
COPY requirements.txt /app/
RUN pip install --no-cache-dir -r requirements.txt

COPY km/ /app/km/
COPY entrypoint.sh /app/entrypoint.sh
RUN chmod +x /app/entrypoint.sh /app/km/*.py

ENV KM_ABLAGE=/data/ablage \
    KM_PORT=8390 \
    PYTHONUNBUFFERED=1

VOLUME ["/data"]
EXPOSE 8390

HEALTHCHECK --interval=60s --timeout=5s --start-period=30s \
  CMD curl -fsS http://127.0.0.1:8390/health >/dev/null || exit 1

ENTRYPOINT ["/app/entrypoint.sh"]
