Files
eltonandClaude Fable 5.1 9b8b3d98ad Mache km zum Dienst: HTTP-API, Takt, Git-Ablage, Image und compose
Ein Prozess (image/km/main.py) mit API (read, search, summary, health,
refresh) auf Standardbibliothek und einem Takt, der die Ablage zieht,
Gitea einliest, indexiert und alles Geänderte committet und pusht — auch
Änderungen aus SilverBullet. Die Ablage ist ein Git-Checkout auf dem
Volume, der Index eine SQLite-Datei daneben; ein Start ohne nötige
Umgebung hält mit einer Liste an.

deploy/compose.yml: km plus SilverBullet auf demselben Volume, für den
oci-Betrieb in hive.home unter /km (SB_URL_PREFIX). deploy/health für
42i-hc. Lokal gegen ein Bare-Remote und spine/core durchgespielt: Ingest,
Index, Commit, Push, Suche, Read mit Kanten in beide Richtungen, und eine
von Hand angelegte Seite landet im nächsten Takt im Remote.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-04 18:44:50 +02:00

32 lines
1004 B
Docker

# 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"]