RabbitMQ и Symfony

Для настройки доступа к RabbitMQ из docker контейнера потребуется:

  1. Установить расширение amqp для php

В Dockerfile с настройками php добавить строки:

RUN apt-get install librabbitmq-dev -y
	
RUN pecl install amqp \
   && docker-php-ext-enable amqp

Без установки данного расширения возникнет ошибка:

You cannot use the "Symfony\Component\Messenger\Bridge\Amqp\Transport\Connection" as the "amqp" extension is not installed.

Без librabbitmq-dev не получится собрать amqp:

No releases for package "pecl/amqp" exist
install failed
ERROR: Service '****' failed to build: The command '/bin/sh -c pecl install amqp && docker-php-ext-enable amqp' returned a non-zero code: 1
  1. Добавление контейнера в docker-compose.yaml
  rabbitmq:
    image: rabbitmq:3-management
    ports:
      - "5672:5672"
      - "15672:15672"
  1. Выполнить:
docker-compose build
  1. Войти в контейнер с установленной Symfony
  2. Установить компонент Messenger в Symfony
composer req messenger
  1. Установить Symfony AMQP Messenger
require symfony/amqp-messenger
  1. В файле конфигурации (.env) в MESSENGER_TRANSPORT_DSN заменить localhost на имя контейнера с RabbitMQ
MESSENGER_TRANSPORT_DSN=amqps://guest:guest@localhost/%2f/messages