homelab-codex-ws/services/narty27/docker-compose.yml
oskar 2e13a7d1bb feat(narty27): statyczny hosting viz.html na PIHA (nginx + named volume)
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>
2026-07-31 16:38:55 +02:00

26 lines
905 B
YAML

services:
narty27:
image: nginx:alpine
container_name: narty27
restart: unless-stopped
ports:
# Next free port in the PIHA 82x0 static-HTTP block
# (8210 paperless, 8220 nextcloud, 8230 kb-query).
- "8240:80"
volumes:
# Content is personal and lives ONLY in this volume — never in the repo.
# Read-only: nginx just serves it; writes go through the helper-container
# procedure in README.md (docker cp cannot write into a :ro mount).
- narty27_content:/usr/share/nginx/html:ro
# busybox wget — nginx:alpine ships no curl. Serves the personal viz.html;
# index.html is a second copy of the same file so the bare root works.
healthcheck:
test: ["CMD", "wget", "-q", "-O", "/dev/null", "http://127.0.0.1/viz.html"]
interval: 30s
timeout: 10s
retries: 5
start_period: 5s
volumes:
narty27_content: