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=8080
docker 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.