Correct and extend folder docs for Docker Essentials, Watchdogs, Media and Arrs Stack
The docs had drifted from the scripts — a script that no longer exists, three wrong variable names, a reversed run order, and seven scheduled scripts that were never documented at all.
This commit is contained in:
@@ -94,20 +94,54 @@ HOST1_NETWORK_CONNECT_CONTAINERS=(
|
||||
|
||||
```bash
|
||||
# master.conf
|
||||
DAILY_CONTAINER_UPDATES=true # enable/disable daily image pull
|
||||
DAILY_CONTAINER_UPDATES=true # enable/disable the daily image pull
|
||||
# docker_daily_restart.sh still runs regardless
|
||||
# update and restart are independent
|
||||
|
||||
WEEKLY_REMAINING_UPDATES=true # enable/disable weekly remainder pull + prune
|
||||
# to disable: set false or remove from WEEKLY_MAINTENANCE_SCRIPTS
|
||||
WEEKLY_CONTAINER_UPDATES=true # enable/disable the weekly image pull
|
||||
# docker_weekly_restart.sh still runs regardless
|
||||
|
||||
MONTHLY_REMAINING_UPDATES=true # enable/disable the monthly remainder pull
|
||||
# to disable: set false, or remove
|
||||
# "docker_update.sh --remainder" from
|
||||
# MONTHLY_MAINTENANCE_SCRIPTS
|
||||
```
|
||||
|
||||
`docker_update.sh` in normal mode targets `DAILY_RESTART_CONTAINERS` — the same list
|
||||
used by `docker_daily_restart.sh`. No second list to maintain.
|
||||
There is one update script, `docker_update.sh`, with three modes. Each reuses the restart
|
||||
list it pairs with, so there is no second list to maintain:
|
||||
|
||||
`docker_update_remaining.sh` derives its target list automatically:
|
||||
all running containers minus `DAILY_RESTART_CONTAINERS` minus `WEEKLY_RESTART_CONTAINERS`.
|
||||
Everything gets updated at least once per week with no explicit configuration.
|
||||
| Mode | Targets | Runs |
|
||||
|------|---------|------|
|
||||
| *(default)* | `DAILY_RESTART_CONTAINERS` | Daily, before `docker_daily_restart.sh` |
|
||||
| `--weekly` | `WEEKLY_RESTART_CONTAINERS` | Weekly, before `docker_weekly_restart.sh` |
|
||||
| `--remainder` | derived, see below | Monthly, via `MONTHLY_MAINTENANCE_SCRIPTS` |
|
||||
|
||||
Remainder mode needs no configuration at all. It takes every **running** container and
|
||||
subtracts:
|
||||
|
||||
```
|
||||
DAILY_RESTART_CONTAINERS already updated daily
|
||||
WEEKLY_RESTART_CONTAINERS already updated weekly
|
||||
PROFILE_CRITICAL_CONTAINER_NAMES[emby] updated inline by the weekly sync window
|
||||
PROFILE_CRITICAL_CONTAINER_NAMES[critical-data] updated inline by the weekly sync window
|
||||
FALLBACK_<REMOTE>_TIER1..4 owned by the remote's update cycle
|
||||
```
|
||||
|
||||
Stopped containers are never targeted in any mode — pulling for a stopped container adds
|
||||
nothing, and it was most likely stopped deliberately.
|
||||
|
||||
The fallback exclusion is a correctness rule, not an optimisation. This server only runs
|
||||
those containers during a fallback; the remote owns their version. If remainder updated them
|
||||
independently and a handback then occurred, the remote's older image could meet data written
|
||||
by the newer one.
|
||||
|
||||
**Ordering matters.** The update always runs *before* its matching restart so the restart
|
||||
lands on the freshly pulled image. If a container's image actually changed, `docker_update.sh`
|
||||
rebuilds it from its template (a plain `docker restart` reuses the image ID baked in at
|
||||
creation time and would never pick up the new digest) and records it in
|
||||
`DOCKER_UPDATE_REBUILT_*_FILE`. The restart script reads that file and skips those containers
|
||||
rather than restarting them a second time — and discards the file as stale if it is older
|
||||
than `DOCKER_UPDATE_REBUILT_STALE_HOURS`.
|
||||
|
||||
---
|
||||
|
||||
@@ -142,12 +176,22 @@ HOST1_NETWORK_CONNECT_CONTAINERS=()
|
||||
# Shared — applies to both servers
|
||||
|
||||
# ── Container updates ──────────────────────────────────────────────────
|
||||
DAILY_CONTAINER_UPDATES=true
|
||||
WEEKLY_REMAINING_UPDATES=true
|
||||
DAILY_CONTAINER_UPDATES=true # daily pull (DAILY_RESTART_CONTAINERS)
|
||||
WEEKLY_CONTAINER_UPDATES=true # weekly pull (WEEKLY_RESTART_CONTAINERS)
|
||||
MONTHLY_REMAINING_UPDATES=true # monthly pull (everything else)
|
||||
|
||||
# Handoff between update and restart — written by docker_update.sh,
|
||||
# read by the matching restart script so it skips containers already
|
||||
# rebuilt onto a new image this run.
|
||||
DOCKER_UPDATE_REBUILT_DAILY_FILE
|
||||
DOCKER_UPDATE_REBUILT_WEEKLY_FILE
|
||||
DOCKER_UPDATE_REBUILT_STALE_HOURS=12 # older than this = discarded, restart all
|
||||
|
||||
# ── Retry behaviour (shared by restart scripts) ────────────────────────
|
||||
RETRY_COUNT=3 # retry attempts before marking failed
|
||||
SLEEP=5 # seconds between retry attempts
|
||||
CONTAINER_DELAY # seconds between a dependency and its dependents
|
||||
RESTART_VERIFY_WAIT=3 # settle time before verifying a restart stuck
|
||||
|
||||
# Watchdog thresholds (CPU, memory, HTTP, restart loop):
|
||||
# → see Watchdogs/Manual-Watchdogs.md
|
||||
@@ -211,7 +255,24 @@ All scripts support these standard flags:
|
||||
summary block: identity, duration, counts, and a status line. Per-container detail only
|
||||
appears with `--log`. Warnings and errors are always visible regardless of `--log`.
|
||||
|
||||
### `docker_update.sh --remainder`
|
||||
Switches to remainder mode — updates all running containers not in the managed daily/weekly
|
||||
lists. Called by `weekly_sync_maintenance.sh`. Can be run manually to sweep containers
|
||||
that haven't been updated recently.
|
||||
### Script-specific flags
|
||||
|
||||
| Script | Flag | What it does |
|
||||
|--------|------|-------------|
|
||||
| `docker_update.sh` | `--weekly` | Target `WEEKLY_RESTART_CONTAINERS`. Called by `weekly_sync_maintenance.sh` before the weekly restart. |
|
||||
| `docker_update.sh` | `--remainder` | Target every running container not in the daily list, weekly list, emby/critical-data profiles, or fallback tiers. Called by `monthly_maintenance.sh`. Safe to run manually to sweep anything missed. |
|
||||
| `media_cleaner.sh` *(Media/)* | `<anime\|media>` | Required positional profile — there is no default. |
|
||||
|
||||
`docker_update.sh` with no mode flag is normal mode: `DAILY_RESTART_CONTAINERS`, called by
|
||||
`daily_sync_maintenance.sh` before the daily restart.
|
||||
|
||||
### Exit codes
|
||||
|
||||
| Code | Meaning |
|
||||
|------|---------|
|
||||
| `0` | Success, or nothing to do (empty list, disabled toggle, no running containers) |
|
||||
| `1` | One or more containers failed — the summary names them |
|
||||
|
||||
`docker_update.sh` deliberately exits `0` even when pulls fail: a failed pull is not a reason
|
||||
to abort the restart that follows, which simply proceeds on the existing image. The failure
|
||||
is reported in the summary.
|
||||
|
||||
Reference in New Issue
Block a user