MENU

Upgrade Docker Postgres Version

July 14, 2025 • Read: 112 • Linux

Screenshot20250714at115950AM.png

Step-by-Step Upgrade Workflow

### STEP 1: BACKUP CURRENT DATABASE

# Connect to existing container

docker compose exec plausible_db bash

# Internal dump to container volume

pg_dumpall -U postgres > /var/lib/postgresql/backup.sql

# Exit container

exit

### STEP 2: EXTRACT BACKUP FROM VOLUME

# Copy SQL backup to host via docker compose cp

docker compose cp db:/var/lib/postgresql/backup.sql ./backup_$(date +%F).sql

### STEP 3: MIGRATE TO NEW CONTAINER

# Verify backup integrity before migration

head -n 20 backup_*.sql  # Check header

# Update compose.yaml image tag

version: '3.8'
services:
plausible_db:
image: postgres:16-version  # Updated here assume you upgrade to pg16

# Launch new container

docker compose up -d db

# Insert backup into new container

docker compose cp backup_date.sql db:/restore.sql

# Execute under db

docker compose exec -it db

cat restore.sql | psql -U postgres

exit

docker compose down && docker compose up

🔧 Best Practices

graph TD
    A[Stop Services] --> B[pg_dumpall Backup]
    B --> C[Spin up New Container]
    C --> D[Restore Backup]
    D --> E[Test Compatibility]
    E --> F[Update compose.yaml]
    F --> G[Restart Stack]

🔍 Pro Tips

  1. Use ephemeral containers for testing migrations:

    docker run --rm -v $(pwd)/backup.sql:/backup.sql postgres:15 \
       bash -c "psql -U postgres -f /backup.sql"
  2. After migrate, make sure delete old volumes incase redundated file!

💡 Key Resources:


Test your upgrade in staging first!