как использовать laravel queue listen в докере - PullRequest
0 голосов
/ 27 февраля 2019

При работе на локальном хосте я использую:

php artisan queue:listen database

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

Я прочитал, что могу сделать следующее:

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

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

Можете ли вы помочь мне, ребята?

Ответы [ 3 ]

0 голосов
/ 28 февраля 2019

Если вам нужно более одного работника, вы можете настроить его с супервизором, как описано на странице очереди Laravel https://laravel.com/docs/5.7/queues#supervisor-configuration

0 голосов
/ 14 августа 2019

Создайте новый сервис, как показано ниже, и запустите его на том же образе.

Вот мой файл 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:
0 голосов
/ 27 февраля 2019

Чтобы выполнить команду после запуска, добавьте свой Dockerfile RUN cd /my/project/root && php artisan queue:listen

Также вы можете использовать vessel для работы с Docker, он уже предварительно настроен для Laravel, так что вы можете простосделать что-то вроде ./vessel artisan <cmd>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...