postgresql 18+ uses checksums by default
if upgrading from below, disable checksums on new database and enable after migration
postgresql 18+ uses new PGDATA layout
in new containers, your volume should be linked to/var/lib/postgresql
directory structure of<major version>/dockeris expected below
consider moving directories brefore upgrading
--link to avoid accidentally messing with my old directoryrsync -avz <source> <destination>
pg_hba.conf and postgresql.conf
docker container run --rm --mount 'type=bind,src=/data/docker/postgres,dst=/var/lib/postgresql' --env 'PGDATAOLD=/var/lib/postgresql/16/docker' --env 'PGDATANEW=/var/lib/postgresql/18/docker' tianon/postgres-upgrade:16-to-18
--env POSTGRES_INITDB_ARGS='--no-data-checksums' or...docker container run --rm --mount 'type=bind,src=/data/docker/postgres,dst=/var/lib/postgresql' --env 'PGDATAOLD=/var/lib/postgresql/16/docker' --env 'PGDATANEW=/var/lib/postgresql/18/docker' tianon/postgres-upgrade:16-to-18
$ pg_checksums --disable --pgdata /var/lib/postgresql/18/docker