Die SvelteKit-App liegt unter frontend/, das Backend unter backend/ als eigenständige PocketBase-Instanz mit Dockerfile, docker-compose und versioniertem Schema. - PocketBase-URL über PUBLIC_PB_URL konfigurierbar, Default bleibt die produktive Instanz https://api.stammtisch-hersbruck.de - Schema als Snapshot-Migration der sechs fachlichen Collections (users, teams, events, runs, riders, times), abgezogen von der produktiven Instanz. Verifiziert: ein Erststart gegen leere pb_data legt alle sechs an, Felder und API-Rules stimmen überein. - pb_data und pb_migrations als Bind-Mounts, damit Daten persistieren und im Admin-UI erzeugte Migrationen im Repo landen - Veraltete Dokumentation entfernt: pocketbase_schema.json nannte Collections (stages, results, organizers), die es nicht gibt Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
32 lines
1.3 KiB
YAML
32 lines
1.3 KiB
YAML
services:
|
|
pocketbase:
|
|
build:
|
|
context: .
|
|
args:
|
|
# Version-Pin. Update: hier bzw. im Dockerfile hochsetzen und committen.
|
|
PB_VERSION: ${PB_VERSION:-0.39.6}
|
|
restart: unless-stopped
|
|
ports:
|
|
- "8090:8090"
|
|
volumes:
|
|
# Persistenz der SQLite-DB inklusive aller Laufzeitdaten, Uploads,
|
|
# Mail-Settings und des Superusers. Ohne dieses Mapping ist nach jedem
|
|
# Redeploy alles weg — das Schema käme zwar aus pb_migrations zurück,
|
|
# die Daten aber nicht.
|
|
- ./pb_data:/pb/pb_data
|
|
# Migrationen zurück auf den Host. Ohne dieses Mapping schreibt PocketBase
|
|
# die bei Schema-Änderungen im Admin-UI erzeugten Dateien nur ins
|
|
# Container-Dateisystem — sie wären beim nächsten Build verloren und
|
|
# könnten nie committet werden. Das COPY im Dockerfile bleibt trotzdem
|
|
# bestehen, damit das Image auch ohne Bind-Mount das Schema mitbringt.
|
|
- ./pb_migrations:/pb/pb_migrations
|
|
environment:
|
|
# Superuser wird nur beim allerersten Start angelegt (siehe entrypoint.sh)
|
|
SUPERUSER_EMAIL: ${SUPERUSER_EMAIL:-}
|
|
SUPERUSER_PASSWORD: ${SUPERUSER_PASSWORD:-}
|
|
healthcheck:
|
|
test: ["CMD", "wget", "-qO-", "http://127.0.0.1:8090/api/health"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
start_period: 10s
|