Took me zero in a previous job where we used Boxen to configure development laptops. After the initial run, all the code was checked out, compiled, and ready to roll. Automating this on Linux, of course, would’ve been even easier, probably just a single apt package.
I do actually get the whole docker-compose thing for development - almost more than for deployment - but there are too many open problems. Like people insisting using MacOS for development, where Docker is superslow (if you want to, which I hope you do, have your code still sit on your host’s filesystem so you can use all your tools against it), and package management various between non-existent and broken. And then there’s the whole thing of having to wrap very complicated container invocations in scripts, although if you can use the docker-compose hammer everything becomes a bit simpler.
Where I like docker-compose under development the most is if a system has a ton of dependencies that must be there to do development. Our Rails app wants MySQL, Memcached, and a handful of service stubs, and wrapping that in a single docker-compose file makes sense. Stuffing the Rails app in there as well? Not so much, in my experience, it is either too slow (MacOS) or not needed (Linux).
To me, it almost smells like Docker and compose are seen as silver bullets, but to me they’re just easier but not necessarily better tools and if you couldn’t do this before, you probably haven’t looked hard enough; that’s probably my biggest gripe, that when people discover the Docker hammer they refuse to acknowledge that there’s anything but nails.
[And yes, I might be seen as ranting on MacOS. Developers choosing MacOS seems to me a bit reason that things are hard to setup - no package management, a whimsical vendor that constantly breaks things, a reasonable idea - brew - that I think got out of hand and also constantly breaks things, and superslow Docker integration. If that is your chosen development platform, you need indeed to reach for work-arounds to have any chance at a decently reproducible development environment. Interestingly enough, the work-around is called “we use Linux for development but we hide it in containers so that we don’t have to admit it” or something like that. I just took the logical conclusion and installed Linux on my Macbooks, and suddenly my dev env became stable, predictable, and repeatable … ;-)]