Files
docker-postgis/upgrade-entrypoint.sh
Roman Vanicek 604b7818be
All checks were successful
continuous-integration/drone/push Build is passing
Automatic upgrade
2026-03-29 00:23:52 +00:00

38 lines
1.1 KiB
Bash

#!/bin/bash
set -e
DATA_DIR="/var/lib/postgresql/data"
OLD_VERSION_FILE="$DATA_DIR/PG_VERSION"
NEW_VERSION="16"
if [ -f "$OLD_VERSION_FILE" ]; then
OLD_VERSION=$(cat "$OLD_VERSION_FILE")
if [ "$OLD_VERSION" != "$NEW_VERSION" ]; then
echo "Data version ($OLD_VERSION) differs from engine ($NEW_VERSION). Starting upgrade..."
# 1. Move old data to a temporary folder
mkdir -p $DATA_DIR/old_data
mv $DATA_DIR/* $DATA_DIR/old_data/ || true
# 2. Initialize new data directory
mkdir $DATA_DIR/new_data
initdb -D $DATA_DIR/new_data
# 3. Run pg_upgrade
# --link is used to avoid copying files (fast, but requires a backup!)
pg_upgrade \
-d $DATA_DIR/old_data \
-D $DATA_DIR/new_data \
-b /usr/bin/postgres-16 \
-B /usr/local/bin \
--link
echo "Upgrade complete. Cleaning up..."
rm -rf $DATA_DIR/old_data
mv $DATA_DIR/new_data/* $DATA_DIR/
rmdir $DATA_DIR/new_data
fi
fi
exec $@