如何在Docker中使用Laravel队列侦听

时间:2019-02-27 13:40:20

标签: laravel docker docker-compose queue

在本地主机上运行时,我使用:

php artisan queue:listen database

侦听并充当队列。直到我要对我的laravel进行docker操作之前,这都可以正常工作。我已经完成了此操作,因此无法运行命令,以使容器具有队列侦听器。

我了解到我可以执行以下操作:

docker exec -t (containername) php artisan queue:listen

我想找到另一个执行此操作的方法,因为如果容器死亡并重新启动,则该命令将不会执行,并且我不能仅观察容器死亡的时间,以便可以手动执行。我想要一种自动方式。每个启动的容器必须自动运行此命令。我在Dockerfile中尝试过,但没有任何效果。

你能帮我吗?

4 个答案:

答案 0 :(得分:2)

要在启动后执行命令,请添加您的Dockerfile RUN cd /my/project/root && php artisan queue:listen

此外,您可以使用vessel与Docker一起使用,它已经为Laravel预先配置,因此您可以简单地执行类似./vessel artisan <cmd>

的操作

答案 1 :(得分:1)

如果您需要一个以上的工作人员,则可以通过主管进行设置,如Laravel队列页面https://laravel.com/docs/5.7/queues#supervisor-configuration

中所述

答案 2 :(得分:1)

创建一个新的服务,如下图所示。

这是我的library(dplyr) mydf %>% group_by(treatment1) %>% mutate(y_avg = mean(y)) %>% summarise_at(vars(y_avg, contains("doctor_id")), max) # A tibble: 3 x 6 # treatment1 y_avg doctor_id_1 doctor_id_2 doctor_id_3 doctor_id_4 # <fct> <dbl> <int> <int> <int> <int> #1 A -0.192 1 1 1 1 #2 B -0.0390 0 1 1 1 #3 C -0.165 0 1 1 1 文件,这也将有助于在 AWS Fargate 环境中运行队列

docker-composer.yml

答案 3 :(得分:0)

不确定这是正确的方法。但是我已经做了很长时间了,对我来说效果很好。

转到项目文件夹。 运行php artisan queue:listen

在运行此命令之前,请将当前用户添加到www-data组中。