Here is my working solution
Backup
-
Shut down the stack
docker compose down -
Start only the postgres container
docker compose up -d postgres -
Create a backup
docker exec -it docker-postgres-1 pg_dump mattermost -U mmuser --no-privileges > ./backup/postgres13-update-backup.sql -
Stop the db container
docker stop docker-postgres-1
Restore
-
Adjust .env file
POSTGRES_IMAGE_TAG=16-alpine
POSTGRES_DATA_PATH=./volumes/db16/var/lib/postgresql/data -
Bring up the db container only
docker compose up -d postgres -
Remove existing db:s
docker exec -it docker-postgres-1 dropdb mattermost -U mmuser
docker exec -it docker-postgres-1 createdb mattermost -U mmuser -
Import the data
docker exec -i docker-postgres-1 psql -U mmuser -d mattermost < ./backup/postgres13-backup-mattermost.sql
Update Mattermost
- Adjust .env file
MATTERMOST_IMAGE_TAG=11.0 - Bring up the stack (in my case)
docker compose -f docker-compose.yml -f docker-compose.without-nginx.yml up -d