Laravel 调度程序在容器上被杀死

问题描述 投票:0回答:1

我创建了一个带有 cron 作业的 docker 容器,该 cronjob 每分钟运行

php artisan schedule:run
命令,但执行一段时间后该命令返回“Killed”,直到容器重新启动为止一直如此。

我以为是内存问题,所以我把php.ini中Memory_limit的值设置为-1

但是没用...

还有什么可能导致此行为?

php laravel docker laravel-artisan
1个回答
0
投票

进程被终止的原因有很多;如果没有更多信息,就不可能准确找出原因。看看使用“Supervisor”而不是 cron 来管理进程。 “Supervisor”确保命令可靠运行,如果命令被终止则重新启动它,并处理日志记录,这使故障排除变得更容易。

Dockerfile

RUN apt update && apt install -y supervisor
COPY ./supervisord.conf /etc/supervisor/conf.d/supervisord.conf
CMD ["/usr/bin/supervisord"]

主管配置

创建一个名为

supervisord.conf
:

的 Supervisor 配置文件
[supervisord]
nodaemon=true

[program:laravel-scheduler]
command=php /var/www/html/artisan schedule:work --verbose --no-interaction
autostart=true
autorestart=true
user=www-data
stdout_logfile=/var/www/html/storage/logs/scheduler.log
© www.soinside.com 2019 - 2024. All rights reserved.