postgres in place update
postgres in place update
Das Problem
Ich verwalte viele meine Projekte als Docker compose Setup. Dadurch bedingt sind teils nicht alle “drehenden Teile” innerhalb eines compose files in sync mit der eigentlichen Applikation. Als Beispiel: mein Mastodon Server hat eine feste postgres Version seit dem ersten Deployment enthalten:
mastodon-db:
restart: always
image: postgres:14-alpine
container_name: "mastodon-db"
healthcheck:
test: pg_isready -U postgres
environment:
POSTGRES_HOST_AUTH_METHOD: trust
volumes:
- "./mastodon/postgres:/var/lib/postgresql/data"
networks:
- backend
In den Release notes für den nächsten Mastodon Release ist mir dann folgendes aufgefallen:
⚠️ The minimum supported version for PostgreSQL has been bumped to PostgreSQL 14
Ok - kein akutes Problem aber das holt einen früher oder später ein 😺
Lösung durch Upgrade Docker container
Dankenswerterweise gibt es dafür das Projekt pgautoupgrade ! Zunächst der Hinweis:
❗ macht ein Backup eurer Daten ❗
Ok, weiter im Text! Nach dem Backup erstmal das Projekt gestoppt, dann im compose das postgres Image gegen das mit dem gewünschten Upgrade getauscht und mit docker compose up db den Datenbank Container hochgefahren und das Update durchlaufen lassen:
- image: postgres:14-alpine
+ image: pgautoupgrade/pgautoupgrade:15-alpine
Danach die Originale Zeile wieder einfügen (natürlich dann die postgres Version einen hochzählen) und den Stack wieder starten.
