> Ok, I respect your opinion, but remember that there are poor souls like me out there that actually love the opposite.
All things being equal, why prefer Docker Compose? From my perspective, a single binary strictly dominates any Docker Compose solution.
Isolation from the main system, other services, and other dependencies.
Easy to migrate to new system.
Easy to upgrade and downgrade. When a new version causes an issue just restart it with an older version.
One directory to backup and restore that contains all the services and their settings.
It’s the unified interface for me. Updates, logs, service management, network routing, config and storage mapping are all uniform and I don’t have to wrangle many slightly different implementations of each. Isolation from installed packages is a nice bonus.
for long-running services, I've never taken the time to learn something reliable like systemd. with Compose, I can see everything I need to know in one yml file and the commands to go with it. I also don't have to really understand any dependencies or their own configuration and can cleanly remove everything associated with that service with a few commands.
I don't use Docker but I love reading the compose file when a project has it. It is the quickest way for me to get a high level idea of this project's architecture. It's the best documentation :)
Its a single config that lets you run multiple services (and can keep them running), upgrades are just editing an image tag.
Don't have to look at cli docs to figure out how to run it.
Doesn't have access to my file system, logs are easy.
Some isolation is nice. I say some because I’m told it’s security is not to be trusted, but I still like that even a non nefarious binary has ootb boundaries on what state will persist.
I’ve been a die hard native package or static binary proponent for a long time. I still hold that there are real advantages.
As podman has improved and compose stacks have improved, I’ve conceded that containers simplify deployment and updates and isolation, and at this point I find for me the benefits more than outweigh the hassles.
Instead of crafting a set of ansible plays that do all the manual native installation steps, I have a relatively lightweight ansible rig that reads containers and relationships desired from a manifest in inventory, then builds or modifies compose files, then just deploys. Much less futzing. And I’m more likely to keep things up to date regularly as a result
Or, increasingly, dispatch codex to handle it for me
In this way I update home assistant across multiple instances now like magic. I don’t even dread it a little anymore