Docker部署Laravel配置supervisord后Redis队列无法自动启动问题求助
问题解决步骤
- 首先检查
docker/8.0/supervisord.conf配置文件中是否正确添加了队列进程配置,示例配置如下:
[program:laravel-queue] process_name=%(program_name)s_%(process_num)02d command=php /var/www/html/artisan queue:work redis --sleep=3 --tries=3 --max-time=3600 autostart=true autorestart=true stopasgroup=true killasgroup=true user=sail numprocs=1 redirect_stderr=true stdout_logfile=/var/www/html/storage/logs/queue-worker.log stopwaitsecs=3600
- 确认修改supervisord配置后重新构建了Laravel镜像,执行命令:
sail build --no-cache # 或者直接用docker compose命令 docker compose build laravel.test
注意:supervisord配置属于镜像内置内容,不是挂载到本地的文件,修改后必须重新构建镜像才会生效,这是绝大多数初学者都会遗漏的步骤。
- 检查项目根目录
.env文件中队列驱动配置是否正确:
QUEUE_CONNECTION=redis
- 容器启动后,进入容器查看supervisord进程运行状态,确认队列进程是否正常启动:
# 查看所有supervisor管理的进程状态 sail exec laravel.test supervisorctl status # 如果队列进程未启动,查看队列日志排查错误,日志路径为项目目录下的 storage/logs/queue-worker.log
- 确认你的docker-compose.yml中laravel.test服务没有覆盖默认启动命令,你当前贴出的配置没有指定command参数,符合要求,默认会启动supervisord进程。
内容的提问来源于stack exchange,提问作者nrkdrk
相关产品推荐
相关产品推荐

