Outline: (1) scaling and "it works on my machine"; (2) containers vs VMs and what a container really is; (3) Docker: Dockerfile, layers, commands, networks, volumes; (4) Docker Compose: services, localhost pitfall, .env, health checks; (5) pitfalls and beyond one host.
Let the class answer before revealing. The last bullet is the motivation for the whole class.
Ask: what happens to the app if it connects while Postgres is still initialising?