For a long time my homelab was a pile of containers I'd started by hand, each with its own half-remembered docker run incantation living in my shell history and nowhere else. Pi-hole here, a Samba share there, a Calibre web thing I'd forgotten the flags for. It worked until the box rebooted, at which point I'd spend an evening reconstructing the magic from history | grep docker and a lot of guessing.
This weekend I finally moved the lot into a single docker-compose.yml. Every service, its ports, its volumes, its restart policy, all in one file under git. Now the whole house comes back with one command:
services:
pihole:
image: pihole/pihole:latest
restart: unless-stopped
ports:
- "53:53/tcp"
- "53:53/udp"
volumes:
- ./pihole/etc:/etc/pihole
Then docker-compose up -d and it's all there.
The real win isn't convenience, it's that the configuration is now written down. A reboot is no longer a small crisis, it's a non-event, and when I inevitably break something I can read what it's meant to be rather than excavate it from memory. The box stopped being a pet I was afraid to touch. I should have done it two years ago.