fix: track volume directories via .gitkeep for fresh git-based deploys #5
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/volume-dirs-fresh-deploy"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Zusammenfassung
git clone/pull(z. B. via DockHand) bringt nur getrackte Dateien mit;volumes/war komplett.gitignoret, die vondriver_opts.devicereferenzierten Zielverzeichnisse existierten also nach einem frischen Deploy gar nicht. Derlocal-Volume-Treiber (o: bind, type: none) legt fehlende Zielverzeichnisse nicht selbst an (getestet:docker compose upbricht mitno such file or directoryab) — das führte zum wiederholten Abbruch beim Deployen.volumes/*/.gitkeepgetrackt (Standard-Trick für leere Verzeichnisse in Git),.gitignoreentsprechend angepasst — echte Laufzeitdaten bleiben weiterhin ignoriert.mariadb:11.4initialisiert sauber, auch wenn nur eine.gitkeep-Datei im Datenverzeichnis liegt (der Entrypoint prüft auf das fehlendemysql-Systemdatenbank-Unterverzeichnis, nicht auf absolute Leere).driver_opts.devicevon${PWD}auf relative Pfade (.) umgestellt — Compose v2 löst das nachweislich relativ zur Compose-Datei auf, nicht zum Shell-cwd.${PWD}löste bei einem Test mit-f <pfad>aus einem anderen Verzeichnis still den falschen Pfad auf; robuster für Deploy-Tools, die nicht zwingend ins Stack-Verzeichnis wechseln.README.mdkorrigiert (behauptete bisher fälschlich automatisches Anlegen der Ordner).Testplan
docker compose config -qfehlerfreidocker run mariadb:11.4mit.gitkeepim Datenverzeichnis initialisiert sauberdocker compose -f <fremder-pfad> configaus anderemcwd:.löst korrekt auf,${PWD}nichtA fresh git clone/pull (e.g. via DockHand) only brings tracked files; volumes/ was fully gitignored, so the ./volumes/* target directories referenced by driver_opts.device never existed on a fresh deploy. The "local" volume driver (o:bind, type:none) does NOT create missing device directories itself - verified: "docker compose up" fails with "no such file or directory" for a non-existent absolute device path. Fix: track volumes/*/.gitkeep (standard empty-dir-in-git trick), .gitignore updated to un-ignore just the directories + .gitkeep while keeping actual runtime data ignored. Verified mariadb:11.4 initializes cleanly with only a .gitkeep file present in the data directory (its entrypoint checks for the missing "mysql" system database subdir, not literal directory emptiness). Also switched driver_opts.device from ${PWD} to relative paths (.). Verified Docker Compose v2 resolves relative device paths against the compose file's own directory, not the invoking shell's cwd - tested "docker compose -f <path> config" from a different cwd: ${PWD} silently resolved to the wrong path, the relative form resolved correctly regardless of where compose was invoked from. More robust for deploy tools that may not cd into the stack directory first. README.md corrected: it previously (incorrectly) claimed the volume folders get created automatically at start.