Nowy serwis services/narty27 — nginx:alpine serwujacy jeden self-contained plik viz.html z named volume narty27_content (:ro). Port 8240 to nastepny wolny w bloku 82x0 na PIHA (8210 paperless, 8220 nextcloud, 8230 kb-query). Content jest personal: zyje wylacznie w volume narty27_narty27_content i w zrodle na SOLARII (~/narty-2027/saalbach-kb/viz.html). Nigdy w repo, bez backup joba, bez bindu pod /opt/homelab/data. Procedura aktualizacji w README uzywa kontenera-pomocnika (alpine z volume rw), NIE `docker cp` — przy mount :ro docker cp zwraca "mounted volume is marked read-only", zarowno dla dzialajacego jak i zatrzymanego kontenera (zweryfikowane empirycznie 2026-07-31). Zapisywane sa dwie kopie tego samego pliku: viz.html (nazwa kanoniczna) + index.html (zeby golny root dzialal). Walidacja: docker compose config OK (volume rozwija sie do narty27_narty27_content), YAML parse OK, bash -n healthcheck.sh OK. Bez zywego deployu. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
21 lines
699 B
Bash
Executable file
21 lines
699 B
Bash
Executable file
#!/bin/bash
|
|
# Healthcheck for narty27 (nginx:alpine serving a single self-contained viz.html)
|
|
|
|
# Container must be running
|
|
if ! docker ps --filter "name=narty27" --filter "status=running" | grep -qw "narty27"; then
|
|
echo "[FAIL] narty27 container is not running"
|
|
exit 1
|
|
fi
|
|
|
|
# Both copies must answer: viz.html is the canonical name, index.html makes the
|
|
# bare root work. An empty volume means the content was never loaded — see README.
|
|
for path in viz.html ""; do
|
|
if ! curl -sf -o /dev/null "http://127.0.0.1:8240/${path}"; then
|
|
echo "[FAIL] narty27 is not serving /${path} on 127.0.0.1:8240 (content loaded?)"
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
echo "[OK] narty27 is healthy"
|
|
exit 0
|