Использование RabbitMQ из контейнера Docker - PullRequest
0 голосов
/ 28 октября 2018

Я пытаюсь использовать Docker с приложением.Кажется, все работает, кроме Rabbit MQ.Поэтому, чтобы создать контрольный пример, я сделал следующее:

Шаг 1 - Запуск за пределами Docker - работает как положено

1) Создайте простой ASP.NETКонсольное приложение Core 2.1:

using System;
using RabbitMQ.Client;

namespace DockerRabbitMQ
{
    class Program
    {
        static void Main(string[] args)
        {
            RabbitMQConnect();
        }

        public static void RabbitMQConnect()
        {
            var factory = new ConnectionFactory
            {
                HostName = "localhost",
                UserName = "guest",
                Password = "guest"
            };

            var rabbit = factory.CreateConnection();
        }
    }
}

2) Установите RabbitMQ на локальном ПК и протестируйте его, перейдя по адресу: http://localhost:15672. Я вижу портал управления, как и ожидалось, поэтому он работает.

3) Запустите консольное приложение.Он запускается и завершается, как и ожидалось.

Шаг 2 - Запустите внутри Docker

1) Щелкните правой кнопкой мыши на Консольном приложении и выберите: Добавить / Поддержка оркестровки контейнера.Добавлены DOCKERFILE и docker-compose.

2) Добавьте следующее в Docker Compose:

rabbit:
    image: rabbitmq:3-management-alpine
    hostname: rabbit
    ports:
      - "15672:15672"
      - "5672:5672"

3) Остановите службу Rabbit MQ, работающую на локальном ПК (служба была созданав шаге 1, часть 2)

4) Изменить код в шаге 1, часть 1, чтобы сказать:

HostName = "Rabbit",

5) Запустить Docker Compose в Visual Studio.Вот ошибка:

enter image description here

Я считаю, что мой вопрос похож на этот: RabbitMq отклоняет соединение при запуске в Docker .Почему я получаю сообщение об этой ошибке?

Обновление

Чтобы обеспечить запуск RabbitMQ до консольного приложения;Я изменю файл compose следующим образом:

depends_on:
      - rabbitmq

Обновление 2

Я пытался следовать приведенным выше инструкциям, используя приложение MVC вместо консольного приложения (в шаге 1).Я помещаю код подключения в конструктор автозагрузки (только для тестирования) и вижу это:

enter image description here

Почему я вижу ошибку и почемупытается подключиться к: 92.242.132.15:5672?Docker Compose для приложения MVC (и кролика mw) выглядит следующим образом:

version: '3.4'

services:
  dockerrabbitmqmvc:
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=https://+:443;http://+:80
      - ASPNETCORE_HTTPS_PORT=44336
    ports:
      - "54258:80"
      - "44336:443"
    volumes:
      - ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro
      - ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro

      rabbitmq:
        image: rabbitmq:3-management-alpine
        hostname: rabbit
        ports:
          - "15672:15672"
          - "5672:5672"
        expose:
          - "15672"
          - "5672"

1 Ответ

0 голосов
/ 28 октября 2018

Вы должны выставить порты rabbitmq снаружи в вашем файле компоновки Docker после сопоставления портов - что-то вроде ниже

rabbit:
    image: rabbitmq:3-management-alpine
    hostname: rabbit
    ports:
      - "15672:15672"
      - "5672:5672"
    expose:
     - 15672
     - 5672
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...