|
| 1 | +docker stop lms_db_1 |
| 2 | + |
| 3 | +# Put values here if you've configured them before |
| 4 | +# DB_NAME=lms |
| 5 | +# DB_USERNAME=lmsweb |
| 6 | +# DB_PASSWORD= |
| 7 | + |
| 8 | +CURRENT_DATE=$(date +%d-%m-%Y_%H_%M_%S) |
| 9 | +MOUNT_PATH=/pg_data |
| 10 | +PG_OLD_DATA=/pg_data/11/data |
| 11 | +PG_NEW_DATA=/pg_data/13/data |
| 12 | +BACKUP_FILENAME=v11.$CURRENT_DATE.sql |
| 13 | +BACKUP_PATH=$MOUNT_PATH/backup/$BACKUP_FILENAME |
| 14 | +BACKUP_DIR=$(dirname "$BACKUP_PATH") |
| 15 | +VOLUME_NAME=lms_db-data-volume |
| 16 | + |
| 17 | +# Step 1: Create a backup |
| 18 | +docker run --rm -v $VOLUME_NAME:$MOUNT_PATH \ |
| 19 | + -e PGDATA=$PG_OLD_DATA \ |
| 20 | + -e POSTGRES_DB="${DB_NAME:-db}" \ |
| 21 | + -e POSTGRES_USER="${DB_USERNAME:-postgres}" \ |
| 22 | + -e POSTGRES_PASSWORD="${DB_PASSWORD:-postgres}" \ |
| 23 | + postgres:11-alpine \ |
| 24 | + /bin/bash -c "chown -R postgres:postgres $MOUNT_PATH \ |
| 25 | + && su - postgres /bin/bash -c \"/usr/local/bin/pg_ctl -D \\\"\$PGDATA\\\" start\" \ |
| 26 | + && mkdir -p \"$BACKUP_DIR\" \ |
| 27 | + && pg_dumpall -U $DB_USERNAME -f \"$BACKUP_PATH\" \ |
| 28 | + && chown postgres:postgres \"$BACKUP_PATH\"" |
| 29 | + |
| 30 | +# Step 2: Create a new database from the backup |
| 31 | +docker run --rm -v $VOLUME_NAME:$MOUNT_PATH \ |
| 32 | + -e PGDATA=$PG_NEW_DATA \ |
| 33 | + -e POSTGRES_DB="${DB_NAME:-db}" \ |
| 34 | + -e POSTGRES_USER="${DB_USERNAME:-postgres}" \ |
| 35 | + -e POSTGRES_PASSWORD="${DB_PASSWORD:-postgres}" \ |
| 36 | + postgres:13-alpine \ |
| 37 | + /bin/bash -c "ls -la \"$BACKUP_DIR\" \ |
| 38 | + && mkdir -p \"\$PGDATA\" \ |
| 39 | + && chown -R postgres:postgres \"\$PGDATA\" \ |
| 40 | + && rm -rf $PG_NEW_DATA/* \ |
| 41 | + && su - postgres -c \"initdb -D \\\"\$PGDATA\\\"\" \ |
| 42 | + && su - postgres -c \"pg_ctl -D \\\"\$PGDATA\\\" -l logfile start\" \ |
| 43 | + && su - postgres -c \"psql -f $BACKUP_PATH\" \ |
| 44 | + && printf \"\\\nhost all all all md5\\\n\" >> \"\$PGDATA/pg_hba.conf\" \ |
| 45 | + " |
0 commit comments