首先,这是我的Docker容器中的进程列表:

/var/www/html # ps aux
PID   USER     TIME   COMMAND
    1 root       0:00 {php-fpm.sh} /bin/sh /php-fpm.sh
    6 root       0:02 /usr/sbin/crond
    8 root       0:00 /sbin/syslogd -D -s 500
   10 root       1:31 php /var/www/html/artisan queue:work --queue=mailer --sleep=3 --tries=3
   11 root       0:00 /usr/bin/logger -t mailer
   12 root       0:24 php-fpm: master process (/usr/local/etc/php-fpm.conf)
   25 root       0:02 /usr/sbin/crond
   30 root       0:01 /sbin/syslogd -D -s 500
13505 www-data   6:20 php-fpm: pool www
21682 www-data   0:17 php-fpm: pool www
21837 root       0:00 /bin/sh
22078 www-data   0:00 php-fpm: pool www
22123 root       0:00 ps aux
31186 root       0:00 /bin/sh
31301 root       0:00 /bin/sh

这是我的容器的入口点:

#! /bin/sh

# Start cron daemon
/usr/sbin/crond

# Logger, max log file size 500Kb
/sbin/syslogd -D -s 500

( php /var/www/html/artisan queue:work \
    --queue=mailer \
    --sleep=3 --tries=3 2>&1 | /usr/bin/logger -t mailer & )

# Run PHP-FPM
php-fpm -F

问题是php / var / www / html / artisan queue:work不处理qeueu中的作业 .

为了实现这一点,我必须通过运行docker exec -it / bin / sh登录到容器,然后运行php / var / www / html / artisan queue:work --queue = mailer --sleep = 3 --tries = 3,它工作得很好 .

所以问题是什么是错的 .