在两个laravel应用程序之间调用同一队列

在两个laravel应用程序之间调用同一队列,laravel,docker,laravel-5,docker-compose,worker,Laravel,Docker,Laravel 5,Docker Compose,Worker,我有两个laravel项目。每个项目都位于其自己的docker容器中: 第一个项目: potatoes: build: context: ./potatoes dockerfile: Dockerfile args: environment: local ports: - '5000:80' depends_on: - redis - potatoesdb - elasti

我有两个laravel项目。每个项目都位于其自己的docker容器中:

第一个项目:

potatoes:
    build:
      context: ./potatoes
      dockerfile: Dockerfile
      args:
        environment: local
    ports:
      - '5000:80'
    depends_on:
      - redis
      - potatoesdb
      - elasticsearch
    volumes:
      - ./potatoes:/var/www/html/app
第二个项目:

  beanstalk:
    build:
      context: ./beanstalk
      dockerfile: Dockerfile
      args:
        environment: local
    ports:
      - '5004:80'
    depends_on:
      - redis
      - beanstalkdb
    volumes:
      - ./beanstalk:/var/www/html/app
    links:
      - potatoes
每个都有其docker配置和主管:

[supervisord]
nodaemon = true
logfile = /tmp/supervisord.log
logfile_maxbytes = 0

[program:php-fpm]
command=/usr/local/sbin/php-fpm --nodaemonize --fpm-config /usr/local/etc/php-fpm.conf
numprocs=1
autostart=true
autorestart=false

[program:nginx]
command =/usr/sbin/nginx -g "daemon off;"
stdout_logfile = /dev/stdout
stdout_logfile_maxbytes = 0
stderr_logfile = /dev/stderr
stderr_logfile_maxbytes = 0

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php artisan queue:work redis --sleep=3 --tries=3
autostart=true
autorestart=true
numprocs=3
redirect_stderr=true
stdout_logfile=/tmp/worker.log
我需要执行以下操作,但我不知道是否有可能:

在我的第一个项目中,我创建了一个作业:TestJobQueue。当此作业完成时,必须运行另一个项目中的作业(也称为TestJobQueue)

我不知道如何为第一个和第二个项目作业调用相同的队列。我不知道这是Docker的问题,是工人的问题,还是根本不可能做到


有什么想法吗?

不可能按照您介绍的方式进行,因为每个项目都在不同的Docker容器中运行,因此它们的队列不能相同

这是因为当您在Docker文件中执行
CMD[“/usr/bin/supervisords”]
时,每个项目都有自己的
supervisords
每个项目都取决于自己的Docker容器


我认为你可以用docker compose解决这个问题,这是使用不同docker容器的最好方法。甚至可以通过docker compose创建一个supervisord容器,但我对此并不熟悉。

查看本文的选定答案