@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)

Подскажите пожалуйста что нужно сдалть чтобы установить соединение?
  • Вопрос задан
  • 185 просмотров
Решения вопроса 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
Миллиардер, филантроп, патологический лгун
Почему вы из разных конфигов пытаетесь достучаться до сервиса по имени?
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы