You know that moment when you switch machines and suddenly nothing works?

You installed Postgres on your laptop months ago, forgot the setup steps, and now you're on a different machine trying to remember which version you had, what the auth config looked like, and why psql won't connect. Multiply that by every tool in your stack and you get the classic "works on my machine" problem.

Docker fixes this by packaging the environment along with the code. No more reinstalling Postgres from scratch, no more guessing which Python version broke your psycopg2 build. You define it once, and it runs the same everywhere.

For this project, I used Docker to package a small crypto ETL pipeline: pull live prices from the CoinPaprika API, clean the data, and load it into Postgres. Nothing fancy, but it's a good example of the pattern.

From notebook to modules