Symfony4 и RabbitMQ в док-контейнере - PullRequest
0 голосов
/ 04 мая 2018

У меня есть несколько док-контейнеров, которые предоставляют разные вещи в моей рабочей настройке. Один для веб, где мой проект Symfony монтируется как том. И еще один для RabbitMQ, который должен быть представлен сообщениями из проекта Symfony. Я создаю свой контейнер с помощью docker-compose и ansible.

Это мой докер-compose.yml

version: '2'
services:
  web:
    depends_on:
      - db
      - rabbit_mq
    build: ./container/web
    container_name: web
    ports:
      - "80:80"
    volumes:
      - [PATH]:/var/www/html/project
  db:
    image: mysql:5.7
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: "USER"
      MYSQL_DATABASE: "PASS"
    ports:
      - "3306:3306"
    volumes:
      - mysql_data:/var/lib/mysql
    restart: always
  rabbit_mq:
    image: "rabbitmq:3-management"
    hostname: "rabbitmq-localhost"
    container_name: rabbitmq
    ports:
      - "15672:15672"
      - "5672:5672"
    volumes:
      - rabbit:/var/lib/rabbitmq
      - "./container/rabbitmq/config/enabled_plugins:/etc/rabbitmq/enabled_plugins"
      - "./container/rabbitmq/config/rabbitmq.config:/etc/rabbitmq/rabbitmq.config"
      - "./container/rabbitmq/config/definitions.json:/etc/rabbitmq/definitions.json"
    command:  bash -c "sleep 10; rabbitmq-server;"
volumes:
  mysql_data:
  rabbit:
    driver: local

Все работает хорошо, Symfony и RabbitMQ запущены и работают, и я могу получить доступ к управлению rabbitmq через http://localhost:15672

Теперь я пытаюсь отправить сообщение в мою очередь RabbitMQ и получаю сообщение об ошибке:

stream_socket_client(): unable to connect to tcp://127.0.0.1:5672 (Connection refused)

Вот моя конфигурация symfony .env

RABBITMQ_URL=amqp://user:pass@127.0.0.1:5672/vhost

Когда я проверяю контейнер rabbitmq, я вижу, что его IP-адрес равен

"IPAddress": "172.18.0.3"

Поэтому, когда я помещаю этот IP-адрес в файл symfony .env, я могу отправить сообщения в очередь. Но этот ip меняется каждый раз, когда я перезапускаю контейнер докера, и я не хочу все время менять конфигурацию Symfony. Так что лучше всего управлять такими сценариями.

Между прочим: контейнер базы данных доступен через 127.0.0.1:3306 (совсем не понимаю)

1 Ответ

0 голосов
/ 04 мая 2018

попробуйте установить RABBITMQ_URL=amqp://user:pass@rabbit_mq:5672/vhost. rabbit_mq - это имя службы RabbitMQ, которое вы использовали в зависимости от__, для MySql вы должны использовать db в качестве хоста

Пример для Постановка в очередь хранилище

...