Der Pin stand auf 0.39.6, aktuelles Release ist 0.39.11. Reine Patch-Updates innerhalb 0.39, keine Schema- oder API-Aenderungen, aber sicherheitsrelevant: 0.39.7 ersetzt ozzo-validation durch einen eigenen Fork, nachdem die Originalbibliothek den Besitzer gewechselt hat; 0.39.8 und 0.39.11 ziehen Sicherheitsfixes der golang.org/x-Abhaengigkeiten nach. Version an beiden aktiven Stellen gesetzt (Dockerfile-ARG und der Default in docker-compose.yaml). Die Planungsdokumente unter docs/ bleiben unangetastet, sie halten den Stand ihrer Entstehung fest. .env.example um den Deployment-Fall ergaenzt: Beim Deployment gibt es keine .env-Datei, dieselben Variablen werden in Coolify als Environment Variables gesetzt. Ausserdem der Hinweis, dass SUPERUSER_* nur greift, solange noch kein Superuser existiert — nachtraegliche Aenderungen wirken nicht mehr. Verifiziert: Image gebaut, Binary meldet 0.39.11, alle Migrationen laufen gegen eine frische Datenbank durch, alle elf Collections vorhanden, Team-Anlage als normaler User erfolgreich. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
37 lines
1.6 KiB
YAML
37 lines
1.6 KiB
YAML
services:
|
|
pocketbase:
|
|
build:
|
|
context: .
|
|
args:
|
|
# Version-Pin. Update: hier bzw. im Dockerfile hochsetzen und committen.
|
|
PB_VERSION: ${PB_VERSION:-0.39.11}
|
|
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
|
|
# ACHTUNG: pb_migrations wird bewusst NICHT gemountet. Ein Bind-Mount
|
|
# überdeckt das Verzeichnis aus dem Image. Liegt auf dem Host kein
|
|
# ausgechecktes Repo daneben, legt Docker ein leeres Verzeichnis an —
|
|
# PocketBase findet dann keine einzige Migration und startet mit einer
|
|
# Datenbank ohne Collections. Genau das ist bei einem Deployment
|
|
# passiert, das nur die compose-Datei kennt.
|
|
#
|
|
# Die Migrationen kommen deshalb ausschließlich über COPY ins Image
|
|
# (siehe Dockerfile). Im Admin-UI erzeugte Migrationen landen damit nur
|
|
# im Container und müssen von Hand herausgeholt werden:
|
|
# docker compose cp pocketbase:/pb/pb_migrations/<datei> ./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
|