Run the Laravel scheduler in production (start.sh) #19
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Context
routes/console.phpregistersSchedule::command('fedi-discover:poll')->everyMinute()->withoutOverlapping(5)->runInBackground(). This only fires if Laravel's scheduler is actually running.The prod container's
start.sh(per.claude/PLATFORM.md) currently does: wait for PG →package:discover→config:cache→route:cache→view:cache→migrate --force→ FrankenPHP. There is noschedule:work(or cron entry callingschedule:run) in the start script.Result: the v0.1 fedi-poller is registered but never fires in production. Ticket #3 ships dead code in production until this is fixed.
Goal
The Laravel scheduler runs as a long-lived process alongside FrankenPHP in the production container, so registered scheduled tasks (like
fedi-discover:poll) actually fire.Options
schedule:workas a separate process — long-lived, internally tick-loops every minute. Either:schedule:work.php artisan schedule:runevery minute from outside the container. Adds an external dependency.Option 1 is more self-contained for a single-container deploy. Option 2 is more portable but requires cron infrastructure.
Pick whichever fits the deployment model.
Acceptance criteria
docker/prod/start.sh(or equivalent) launches the scheduler process at container boot.fedi-discover:pollruns every minute (checklast_polled_atadvancing on enabled instances).Severity
High — blocks ticket #3's value in production. Without this, every-minute polling is a no-op.