Postgres
DDM läuft mit Postgres 18 – genau dieser Hauptversion, aus unserem Image postgres:18. Es bringt das deutsche Wörterbuch mit, mit dem DDM sucht. Eine andere Hauptversion, auch eine neuere, nutzen Sie erst, wenn wir sie mit einem Image anbieten und hier beschreiben.
Fehlerbehebungen von Postgres
Die Fehlerbehebungen von Postgres 18 (18.1, 18.2 …) kommen mit jeder DDM-Version unter demselben Tag, postgres:18. Sie brauchen keine Umstellung der Daten – ein Neustart mit dem neuen Image genügt, DDM ist dabei ein paar Sekunden nicht erreichbar. Watchtower und Keel lassen Postgres aus; Sie holen sie von Hand, am besten mit jedem DDM-Update:
# Docker Compose
docker compose pull postgres
docker compose up -d postgres
# Kubernetes – ddm.yaml holt das Image bei jedem Start neu
kubectl -n ddm rollout restart statefulset/postgres
Auf eine neue Hauptversion umziehen
Eine neue Hauptversion (18 → 19) liest die Daten der alten nicht: Sie werden gesichert und in die neue eingespielt. Das machen Sie nur, wenn wir die neue Version anbieten – wir sagen es Ihnen mit dem Update. Planen Sie eine halbe Stunde ein, in der DDM nicht erreichbar ist; bei großen Datenbanken länger.
Die neue Version bekommt ein eigenes Volume. Das alte bleibt unangetastet – geht etwas schief, gehen Sie damit zur alten Version zurück. Erst wenn alles läuft, löschen Sie es.
Mit Docker Compose
- Die Apps anhalten und die Datenbank sichern – in eine Datei neben
compose.yaml:cd /opt/ddm docker compose stop cms render-worker client docker compose exec -T postgres pg_dump -U ddm -d ddm -Fc > ddm-18.dump docker compose stop postgres - In
compose.yamldrei Stellen ändern: beim Dienstpostgresdas Image auf…/postgres:19und das Volume vonpostgres:/var/lib/postgresqlaufpostgres-19:/var/lib/postgresql; untervolumes:am Endepostgres-19:ergänzen. - Die neue Version starten und die Sicherung einspielen:
docker compose up -d postgres docker compose exec -T postgres pg_restore -U ddm -d ddm --no-owner < ddm-18.dump docker compose up -d
Mit Kubernetes
- Die Apps anhalten und die Datenbank sichern:
kubectl -n ddm scale deployment cms render-worker client --replicas=0 kubectl -n ddm exec postgres-0 -- pg_dump -U ddm -d ddm -Fc > ddm-18.dump - In
ddm.yamldrei Stellen ändern: beim StatefulSetpostgresdas Image auf…/postgres:19, und den Namen des Volumes vonpostgresaufpostgres-19– untervolumeMountsund untervolumeClaimTemplates. - Das StatefulSet neu anlegen. Sein Volume bleibt dabei erhalten – Kubernetes löscht es nicht mit:
kubectl -n ddm delete statefulset postgres kubectl -n ddm apply -f ddm.yaml kubectl -n ddm rollout status statefulset/postgres - Die Sicherung einspielen und die Apps starten:
kubectl -n ddm exec -i postgres-0 -- pg_restore -U ddm -d ddm --no-owner < ddm-18.dump kubectl -n ddm scale deployment cms render-worker client --replicas=1
Danach
Prüfen Sie im CMS, ob Ihre Dokumente da sind und die Suche findet. Behalten Sie ddm-18.dump und das alte Volume ein paar Tage, dann löschen Sie es:
docker volume rm ddm_postgres # Docker Compose
kubectl -n ddm delete pvc postgres-postgres-0 # Kubernetes
Zurück zur alten Version, falls nötig: die drei Stellen wieder zurücksetzen und neu starten – bei Kubernetes wie in Schritt 3 mit delete statefulset und apply. Das alte Volume hat die Daten von vor dem Umzug.