The chown was running before cp seeded categories from initial-categories,
so the copied files remained owned by root. Now permissions are fixed
after all file operations complete.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Run container as root initially to fix volume mount permissions
- Use gosu to drop to appuser before starting uvicorn
- chown /data directories at startup (Coolify mounts volumes as root)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Coolify remaps volume mounts to its own managed directories, so
./categories was mapped to an empty dir instead of the repo data.
Changes:
- Backend build context changed to repo root (.) so categories/ is accessible
- Dockerfile copies categories into /data/initial-categories/
- startup.sh seeds /data/categories from bundled data if empty
- Removed categories volume mount (reports still persisted via volume)
- Added root .dockerignore (categories NOT excluded)
- Updated CI workflow to match new build context
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>