Skip to content

Instantly share code, notes, and snippets.

@int3hh
Created April 9, 2025 19:17
Show Gist options
  • Save int3hh/d1e7dd86c2c6c9b35fd6f9540c79ab5e to your computer and use it in GitHub Desktop.
Save int3hh/d1e7dd86c2c6c9b35fd6f9540c79ab5e to your computer and use it in GitHub Desktop.

PostgreSQL Podman Container Commands

A collection of useful commands for running, backing up, and restoring PostgreSQL databases with Podman.

Running a PostgreSQL Container

podman run --name postgres-db --rm -e POSTGRES_PASSWORD=mysecretpassword -e POSTGRES_USER=postgres -e POSTGRES_DB=postgres -p 5432:5432 -v postgres-data:/var/lib/postgresql/data postgres:latest

Options Explained:

  • --name postgres-db: Names the container
  • --rm: Automatically removes the container when it stops
  • -e POSTGRES_PASSWORD=mysecretpassword: Sets the database password
  • -e POSTGRES_USER=postgres: Sets the database username
  • -e POSTGRES_DB=postgres: Creates a default database
  • -p 5432:5432: Maps container port to host port
  • -v postgres-data:/var/lib/postgresql/data: Creates a persistent volume for data
  • postgres:latest: Uses the latest PostgreSQL image (specify version like postgres:15 if needed)

Backing Up PostgreSQL Database

Basic Backup

podman exec postgres-db pg_dump -U postgres -d postgres > backup.sql

With Password

PGPASSWORD=mysecretpassword podman exec postgres-db pg_dump -U postgres -d postgres > backup.sql

Compressed Backup

podman exec postgres-db pg_dump -U postgres -d postgres | gzip > backup.sql.gz

Custom Format Backup (supports parallel restore)

podman exec postgres-db pg_dump -U postgres -d postgres -Fc > backup.dump

Importing/Restoring PostgreSQL Database

Basic Import

cat backup.sql | podman exec -i postgres-db psql -U postgres -d postgres

With Password

PGPASSWORD=mysecretpassword cat backup.sql | podman exec -i postgres-db psql -U postgres -d postgres

Import Compressed Backup

gunzip -c backup.sql.gz | podman exec -i postgres-db psql -U postgres -d postgres

Import Custom Format

podman exec postgres-db pg_restore -U postgres -d postgres -c backup.dump

Transaction Import (all-or-nothing)

cat backup.sql | podman exec -i postgres-db psql -U postgres -d postgres -1

Other Useful Commands

Connect to PostgreSQL Shell

podman exec -it postgres-db psql -U postgres

Check Container Logs

podman logs postgres-db

Stop the Container

podman stop postgres-db

Remove Data Volume (caution: destroys data)

podman volume rm postgres-data
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment