Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Docker中使用Laravel队列侦听_Laravel_Docker_Docker Compose_Queue - Fatal编程技术网

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

如何在Docker中使用Laravel队列侦听,laravel,docker,docker-compose,queue,Laravel,Docker,Docker Compose,Queue,在本地主机上运行时,我使用: php artisan队列:侦听数据库 它侦听并充当队列。在我想对我的Laravel应用程序进行Dockerize之前,这一切都很正常。我已经这样做了,所以无法运行该命令,以便容器具有队列侦听器 我读到我可以做到以下几点: docker exec-t(containername)php artisan队列:侦听 我想找到另一种方法来实现这一点,因为如果容器死亡并重新启动,这个命令将不会被执行,我不能只是观察容器何时死亡,这样我就可以手动执行。我想要一种自动方式。每个

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

php artisan队列:侦听数据库

它侦听并充当队列。在我想对我的Laravel应用程序进行Dockerize之前,这一切都很正常。我已经这样做了,所以无法运行该命令,以便容器具有队列侦听器

我读到我可以做到以下几点:

docker exec-t(containername)php artisan队列:侦听


我想找到另一种方法来实现这一点,因为如果容器死亡并重新启动,这个命令将不会被执行,我不能只是观察容器何时死亡,这样我就可以手动执行。我想要一种自动方式。每个启动的容器都必须自动运行此命令。我尝试使用Dockerfile,但没有任何效果。

要在启动后执行命令,请添加Dockerfile
运行cd/my/project/root&&php artisan队列:listen


此外,您还可以使用Docker,它已经为Laravel预先配置好了,这样您就可以简单地执行类似于
/Vesser artisan
的操作,在启动后执行命令,添加到Docker文件
中运行cd/my/project/root&&php artisan队列:listen


此外,您还可以使用Docker进行工作,它已经为Laravel进行了预配置,这样您就可以简单地执行类似于
/Vesser artisan

的操作。如果您需要多个工人,您可以使用管理员进行设置,如Laravel队列页面中所述,您可以使用supervisor进行设置,如Laravel队列页面中所述,创建一个新服务,如下所示,并在同一图像上运行它

这是我的
docker composer.yml
文件,这将有助于在AWS Fargate环境中运行队列

version: "3.4"
services:
  www:
    build: 
        context: .
        dockerfile: ./docker/Dockerfile
    image: php-laravel:latest
    ports: 
        - "8008:80"
    volumes:
        - ./src:/var/www/html/
    networks:
        - default
  php-queue:
    restart: always
    image: php-laravel:latest
    command: php artisan queue:work
    volumes:
        - ./src:/var/www/html/
volumes:
    default:

创建一个新服务,如下所示,并在同一映像上运行它

这是我的
docker composer.yml
文件,这将有助于在AWS Fargate环境中运行队列

version: "3.4"
services:
  www:
    build: 
        context: .
        dockerfile: ./docker/Dockerfile
    image: php-laravel:latest
    ports: 
        - "8008:80"
    volumes:
        - ./src:/var/www/html/
    networks:
        - default
  php-queue:
    restart: always
    image: php-laravel:latest
    command: php artisan queue:work
    volumes:
        - ./src:/var/www/html/
volumes:
    default:

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

转到项目文件夹。 运行php artisan队列:侦听


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

不确定这是否正确。但我已经做了很长一段时间了,这对我来说很好

转到项目文件夹。 运行php artisan队列:侦听


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

我已经尝试了
运行php artisan queue:listen&
,包括
。在这两种情况下,它们都不起作用。我试过运行php artisan queue:listen&
,无论是否使用
&
。在这两种情况下,它们都不起作用。