在两个laravel应用程序之间调用同一队列
我有两个laravel项目。每个项目都位于其自己的docker容器中: 第一个项目:在两个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
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容器,但我对此并不熟悉。查看本文的选定答案