mirror of
https://github.com/InvoiceShelf/InvoiceShelf.git
synced 2026-08-04 07:02:13 +00:00
Fixes InvoiceShelf/docker#75 and #69, and gives InvoiceShelf/docker#77 and #63 an actionable error instead of a cryptic one. storage/framework/{cache,sessions,views}, storage/logs and storage/app hold no tracked content — only .gitignore stubs — so nothing guarantees they exist inside a mounted volume. Docker seeds a named volume from the image exactly once, when the volume is empty, and never again: a volume created by an older image keeps whatever it had through every subsequent upgrade. When those directories are absent Laravel dies at boot with "Please provide a valid cache path", because config/view.php resolves its compiled path with realpath(), which returns false for a missing directory. The sqlite branch also cannot place its database. Reproduced against a locally built image: deleting storage/framework from a named volume fails the container with exactly that message, and passes with this change. The chown is guarded on being root. The image runs as www-data (uid 82), where chown of a foreign-owned file is EPERM and, under `set -e`, would stop the container from starting at all — which is the likely reason it was dropped from this tree previously. Guarding it keeps the benefit for anyone running as root without that failure mode. A mount the container genuinely cannot write to is not something the entrypoint can fix, so it now says so and names the remedy, rather than letting the failure surface later as a Laravel stack trace.