For the last two years, I’ve been treating compose files as individual runners for individual programs.
Then I brainstormed the concept of having one singular docker-compose file that writes out every single running container on my system… (that can use compose), each install starts at the same root directory and volumes branch out from there.
Then I find out, this is how most people use compose. One compose file, with volumes and directories branching out from wherever ./ is called.
THEN I FIND OUT… that most people that discover this move their installations to podman because compose works on different versions per app and calling those versions breaks the concept of having one singular docker-compose.yml file and podman doesn’t need a version for compose files.
Is there some meta for the best way to handle these apps collectively?
As other have said, I have a root docker directory then have directories inside for all my stacks, like Plex. Then I run this script which loops through them all to update everything in one command.
Or just use the Watchtower container to auto-update them 😉
I don’t like the auto update function. I also use a script similar to the one op uses (with a .ignore file added). I like to be in control when (or if) updates happen. I use watchtower as a notification service.
Exactly, when it updates, I want to initiate it to make sure everything goes as it should.
Nothing off mine is that important that I couldn’t create/rollback the container if it does happen to screw up.
I scream test myself… kidding aside, I try to pin to major versions where possible —
Postgres:16-alpine
for example will generally not break between updates and things should just chip along. It’s when indie devs not tagging anything other thanlatest
or adhere to semantic versioning best practices where I keep watchtower off and update once in a blue moon manually as a result.I use Diun to notify me when an image is updated. I also use strict versions in my compose file, that way if I have to restore to another system I don’t soft brick a container due to a breaking version change.
I prefer manually updating so that I can sanity-test for breaking changes.
I have a script like the one above but I don’t loop through the services; I just run it for each service and then test it. I also only have it delete versions of a certain age.