I don’t use Watchtower, but a script that takes a btrfs snapshot before doing a docker compose pull, then docker compose up.
Same idea, just safer and fewer surprises.
Same idea, just safer and fewer surprises.
SHOT_TIME="$(date +'%Y-%m-%d_%H-%M')"
for dir in /docker/*
do
cd $dir;
btrfs subvolume snapshot "${dir}" "/docker/.snapshots/$(basename $dir)-${SHOT_TIME}"
docker compose pull --quiet
docker compose up -d
done
I mount a btrfs subvolume at /docker, and create a .snapshots subvolume inside.Each subvolume is an app and its dependencies, you want everything snapshotted as one. This is probably the biggest pitfall, if you don't take that snapshot of all the pieces.
/docker
|--> .snapshots
|--> app_one-2024-08-28_12-34
|--> app_one
|--> compose.yaml
|--> volumes
|--> app_one-config
|--> app_one-db
|--> app_two
|--> compose.yaml
|--> volumes
|--> app_two-config
|--> app_two-db