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>
32 lines
1004 B
Docker
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"]
|