Очереди Laravel с супервизором — конфигурация Docker

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

Поэтому мы создадим отдельный сервис docker для supervisor, чтобы добиться лучшей производительности.

Сначала нам нужно настроить основной docker-compose.yml :

supervisor:
    build:
      context: .
      dockerfile: {path to file}/supervisor.dockerfile
    container_name: supervisor
    volumes:
      - ./src:/var/www/html
    networks:
      - laravel

Войти в полноэкранный режим Выход из полноэкранного режима

затем нужно создать отдельный dockerfile для супервизора supervisor.dockerfile.

FROM php:7.4-fpm-alpine // I'm using 7.4 you can use php-version as per your application.

RUN docker-php-ext-install pdo pdo_mysql

RUN apk update && apk add --no-cache supervisor

RUN mkdir -p "/etc/supervisor/logs"

COPY {path to file}/supervisord.conf /etc/supervisor/supervisord.conf

CMD ["/usr/bin/supervisord", "-n", "-c",  "/etc/supervisor/supervisord.conf"]

Войти в полноэкранный режим Выйти из полноэкранного режима

после этого нужно создать конфигурационный файл supervisord.conf и задать в нем директорию логов и т.д…

[supervisord]
logfile=/etc/supervisor/logs/supervisord.log ; main log file; default $CWD/supervisord.log
logfile_maxbytes=5MB         ; max main logfile bytes b4 rotation; default 50MB
logfile_backups=10           ; # of main logfile backups; 0 means none, default 10
loglevel=info                ; log level; default info; others: debug,warn,trace
pidfile=/tmp/supervisord.pid ; supervisord pidfile; default supervisord.pid
nodaemon=false               ; start in foreground if true; default false
minfds=1024                  ; min. avail startup file descriptors; default 1024
minprocs=200                 ; min. avail process descriptors;default 200

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL  for a unix socket

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/html/artisan queue:work
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true
numprocs=1
redirect_stderr=true
stdout_logfile=/var/www/html/storage/logs/worker.log
stopwaitsecs=3600
stdout_logfile_maxbytes=5MB
Вход в полноэкранный режим Выход из полноэкранного режима

и все.

Теперь запустите & пересоберите docker контейнер и все заработало как бум 💥.

Спасибо за чтение.

** Если у вас есть какие-либо вопросы, вы можете задать их в разделе комментариев.

Оцените статью
Procodings.ru
Добавить комментарий