Debugging Steps
- The cron jobs in
laradock
are executed in theworkspace
container. Check logs using:
docker-compose logs -f workspace
Sample log output:
Jul 2 12:26:59 9b6ec4d18dd1 syslog-ng[12]: syslog-ng starting up; version='3.13.2'
workspace_1 | *** Booting runit daemon...
workspace_1 | *** Runit started as PID 20
workspace_1 | Jul 2 12:27:00 9b6ec4d18dd1 cron[23]: (CRON) INFO (pidfile fd = 3)
...
- Enter the container:
docker-compose exec workspace bash
- Test cron job execution without suppressing output:
/usr/bin/php /var/www/artisan schedule:run
Permission Issues
- Logs in
/storage/logs
showed permission errors when created by root user. Fix permissions:
chmod -R 0777 storage
- Access container as
laradock
user:
docker-compose exec --user=laradock workspace bash
Critical Update (2021-07-02 11:19:56 Friday)
Discovered cron jobs failing due to Windows line ending characters (^M):
- Log output revealed hidden characters:
workspace_1 | Jul 2 03:20:01 fac0b255876a CRON[350]: (laradock) CMD (/usr/bin/php...2>&1^M)
- Solution:
- Remove CRLF line endings from cron configurations
- Rebuild container:
docker-compose build workspace docker-compose stop workspace && docker-compose up -d workspace
Multi-Server Deployment Strategy
To prevent duplicate cron job execution:
-
Remove Laravel scheduler from
laradock/workspace/crontab/laradock
-
Use
php-worker
container instead -
Enable scheduler:
cp laravel-scheduler.conf.example laravel-scheduler.conf docker-compose restart php-worker
-
Verify operation:
docker-compose exec php-worker sh
/etc/supervisor/conf.d # supervisorctl status
Expected output:
laravel-scheduler:laravel-scheduler_00 RUNNING pid 9, uptime 2:14:33