@j238267431

Как правильно настроить подключение к RabbitMQ с использование Docker и Laravel?

Добрый день

пробую соединить 2 проекта с помощью RabbitMQ
RabbitMQ запущен в Docker
docker-compose.yml
version: "2.1"
services:
  rabbitmq:
    image: rabbitmq:3.10.7-management
    hostname: rabbitmq
    container_name: rabbitmq
    restart: always
    environment:
      - RABBITMQ_DEFAULT_USER=guest
      - RABBITMQ_DEFAULT_PASS=guest
      - RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS=-rabbit log_levels [{connection,error},{default,error}]
    ports:
      - 15672:15672
      - 5672:5672
networks:
  default:
    name: "mm-network"
    external: true


вот docker-complose.yml отправителя на Laravel
version: '3.3'

services:
  nginx:
    build: 
      context: .
      dockerfile: docker/Nginx.Dockerfile
    ports:
      - 8091:80
    links:
      - fpm
    volumes:
      - ./:/var/www/laravel-docker
  fpm:
    build:
      context: .
      dockerfile: docker/Fpm.Dockerfile
    volumes:
      - ./:/var/www/laravel-docker
    links:
      - mysql
  mysql:
    image: mysql:5.7
    ports:
      - 33063:3306
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=laravel-vite
networks:
  default:
    name: "mm-network"
    external: true


сообщение пробую отправить с помощью mpqlib

$connection = new AMQPStreamConnection('rabbitmq', 15672, 'guest', 'guest');
        $channel = $connection->channel();

        $channel->queue_declare('hello', false, true, false, false);

        $msg = new AMQPMessage('Hello World!');
        $channel->basic_publish($msg, '', 'hello');

        echo " [x] Sent 'Hello World!'\n";

        $channel->close();
        $connection->close();


но не получается установить соединение
PhpAmqpLib\Exception\AMQPIOException

stream_socket_client(): Unable to connect to tcp://rabbitmq:15672 (php_network_getaddresses: getaddrinfo for rabbitmq failed: nodename nor servname provided, or not known)

Подскажите пожалуйста что нужно сдалть чтобы установить соединение?
  • Вопрос задан
  • 68 просмотров
Решения вопроса 1
black1277
@black1277
Вольный стрелок
Для fpm откройте порт и привяжите сеть:
fpm:
    build:
      context: .
      dockerfile: docker/Fpm.Dockerfile
    volumes:
      - ./:/var/www/laravel-docker
    ports:
      - 5672:5672
    links:
      - mysql
    networks:
      - mm-network

networks:
  mm-network:
    external: true

и в самом PHP нужно соединяться не на 15672 порт (это порт для вебинтерфейса), а на 5672. Строка подключения на rabbit должна выглядеть так:
amqp://guest:guest@localhost:5672
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ky0
@ky0
Миллиардер, филантроп, патологический лгун
Почему вы из разных конфигов пытаетесь достучаться до сервиса по имени?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы