If you're working with PostgreSQL inside Docker, at some point you’ll need to reset your database.
Maybe:
- You want a clean start
- You imported the wrong data
- Or something just went wrong (it happens 😅)
Dropping a database sounds simple — but there’s one important rule that can trip you up.
⚠️ The Rule Most People Miss
👉 You cannot drop a database while you're connected to it
So if your database is my_database, you must connect to a different one (usually postgres) before dropping it.
🚀 The Correct Command
Here’s the safe and correct way to drop your database from a Docker container:
docker exec -i postgres_container psql -U postgres -d postgres -c "DROP DATABASE my_database;"
🧠 What’s Happening Here?
-
docker exec→ runs a command inside your container -
postgres_container→ your container name -
psql→ PostgreSQL CLI -
-d postgres→ connect to default database (not the one you're deleting) -
DROP DATABASE my_database;→ removes the database
👉 In simple terms:
“Connect to a safe database and delete the target database from there.”
🔄 Drop and Recreate (Clean Reset)
If you want a fresh database:
docker exec -i postgres_container psql -U postgres -d postgres -c "DROP DATABASE IF EXISTS my_database;"
docker exec -i postgres_container psql -U postgres -d postgres -c "CREATE DATABASE my_database;"
🔥 Full Reset (Docker Way)
If you want to completely wipe everything:
docker-compose down -v
docker-compose up -d
This removes:
- All databases
- Volumes
- Stored data
👉 You get a completely fresh start.
🧩 When You’ll Need This
- Resetting development databases
- Fixing broken migrations
- Cleaning test environments
- Re-importing fresh data
🏁 Final Thoughts
Dropping a PostgreSQL database inside Docker is straightforward — once you understand the connection rule.
The key takeaway:
Always connect to a different database before dropping the target one.
It’s a small detail, but it saves a lot of confusion.
Top comments (0)