Вызовите одну и ту же очередь между двумя приложениями Laravel - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть два проекта Laravel. Каждый проект находится в своем собственном док-контейнере:

Первый проект:

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

Каждый имеет свою конфигурацию докера с супервизором:

[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.

Я не знаю, как вызвать одну и ту же очередь для первого и второго заданий проекта. Я не знаю, если это проблема с Докером, с рабочим, или это просто невозможно.

Есть идеи?

1 Ответ

1 голос
/ 06 ноября 2019

Это невозможно сделать так, как вы это представляли, потому что каждый проект выполняется в отдельном контейнере Docker, поэтому их очереди не могут быть одинаковыми.

Это потому, что когда вы делаете CMD ["/usr/bin/supervisord"] в своем Dockerfile, каждый проект имеет свой собственный supervisord каждый из них в зависимости от своего собственного контейнера Docker.

Я думаю, что вы можете решить это с помощьюdocker-compose, это лучший способ работы с различными контейнерами Docker. Или даже создать контейнер supervisord через docker-compose, но я не очень знаком с этим.

...