docker-apps/_instructions/to upgrade postgresql.txt
2025-04-15 22:40:04 +02:00

62 lines
1.9 KiB
Plaintext

To upgrade postgresql
---------------------
# example below uses vaultwarden as the app with db user "vaultwarden" and db name "vaultwarden"
# all commands are executed from docker shell, unless stated otherwise
# stop vaultwarden
cd /opt/stacks/vaultwarden
docker compose down
# start postgresql
cd /opt/stacks/vaultwarden
docker compose up -d postgresql
# dump database
cd /opt/stacks/vaultwarden
mkdir /mnt/data/vaultwarden/pgbackups/$(date -I)
docker exec vaultwarden-postgresql-1 pg_dumpall -U vaultwarden > /mnt/data/vaultwarden/pgbackups/$(date -I)/vaultwarden-backup.sql
chown -R postgres:postgres /mnt/data/vaultwarden/pgbackups/$(date -I)
chmod -R 700 /mnt/data/vaultwarden/pgbackups/$(date -I)
# stop postgresql
cd /opt/stacks/vaultwarden
docker compose down postgresql
# rename pgdata (we don't delete yet; in order to have a rollback option)
# in Truenas shell, enter
zfs rename SSD1/docker/data/vaultwarden/pgdata SSD1/docker/data/vaultwarden/pgdata-old
# create new pgdata dataset
# in Truenas shell, enter
zfs create SSD1/docker/data/vaultwarden/pgdata
chown -R postgres:postgres /mnt/SSD1/docker/data/vaultwarden/pgdata
chmod 700 /mnt/SSD1/docker/data/vaultwarden/pgdata
# edit the vaultwarden compose.yml file to the new version of the postgresql image
# -- snip --
postgresql:
image: postgres:17-alpine
# -- snip --
# pull image
docker compose pull
# start new postgresql container
docker compose up -d postgresql
# import database dump
cat /mnt/data/vaultwarden/pgbackups/$(date -I)/vaultwarden-backup.sql | docker exec -i vaultwarden-postgresql-1 psql -U vaultwarden
# stop postgresql
cd /opt/stacks/vaultwarden
docker compose down postgresql
# start stack
cd /opt/stacks/vaultwarden
docker compose up -d
# Check if all is ok
# Log into vaultwarden as check if all looks ok
# If ok, delete the pgdata-old dataset using Truenas GUI, or later (after confidence is high enough)