Turn-key local PostgreSQL environment with persistent storage, pgAdmin UI, and helper scripts for reset, backup, and restore.
Perfect for rapid prototyping, dev, and QA environments. π
.
βββ .env
βββ docker-compose.yml
βββ postgres/
β βββ init/ # Optional SQL seed scripts (auto-run on first boot)
βββ scripts/
β βββ reset-postgres.sh # Reset containers & volumes
β βββ backup-postgres.sh # Backup DB to ./backups
β βββ restore-postgres.sh # Restore DB from SQL dump
βββ backups/ # Auto-created by backup script
All environment variables live in .env:
# Postgres
POSTGRES_CONTAINER_NAME=postgres-dev
POSTGRES_VERSION=16
POSTGRES_DB=appdb
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgrespassword
POSTGRES_PORT=5432
# pgAdmin
PGADMIN_CONTAINER_NAME=pgadmin-dev
PGADMIN_DEFAULT_EMAIL=admin@example.com
PGADMIN_DEFAULT_PASSWORD=pgadminpassword
PGADMIN_PORT=8080docker compose up -d
docker compose down
docker compose down -v
docker compose up --build -d
./scripts/backup-postgres.sh
./scripts/restore-postgres.sh ./backups/postgres_dump_YYYYMMDD_HHMMSS.sql
psql -h localhost -p 5432 -U postgres -d appdb
π http://localhost:8080 Login with:
Email: PGADMIN_DEFAULT_EMAIL
Password: PGADMIN_DEFAULT_PASSWORD
Then add a new server:
Host: postgresPort: 5432Username: POSTGRES_USERPassword: POSTGRES_PASSWORD
graph TD
subgraph Docker Network
A[pgAdmin
:8080] <--> B[Postgres
:5432]
end
C[Host Machine] -->|browser| A
C -->|psql / apps| B
- Add .sql files to ./postgres/init/ to auto-seed on first boot.
- Use in a monorepo by cloning this boilerplate into services/postgres.