2015-12-29 2 views
0

Я использую Docker с VirtualBox и dinghy и docker-compose. Я создаю контейнер через docker-compose. Ниже приведена конфигурация docker-compose.yml.Докер виртуальный хост кэшированный

rabbitmq: 
    image: rabbitmq:3-management 
    ports: 
    - "15672:15672" 
    - "5672:5672" 
    environment: 
    VIRTUAL_HOST: 'rabbitmq.docker' 
    VIRTUAL_PORT: 15672 
    RABBITMQ_DEFAULT_USER: docker 
    RABBITMQ_DEFAULT_PASS: docker 

Все работает отлично. Я могу войти на страницу управления RabbitMQ, посетив url rabbitmq.docker:15672, и пользователь docker настроен правильно.

Я хотел немного поэкспериментировать, поэтому я удалил раздел environment. Я удалил изображение и контейнер и снова построил/запустил его. То, что я не понимаю, я все равно могу посетить страницу управления с использованием того же uri, хотя на этот раз я не указал виртуальный хост.

Полученный файл yml это

rabbitmq: 
    image: rabbitmq:3-management 
    ports: 
    - "15672:15672" 
    - "5672:5672" 

Что я пропустил? Поскольку я больше не указываю виртуальный хост, это, на мой взгляд, не должно происходить. Есть ли способ увидеть все виртуальные хосты, которые использует Docker?

ответ

1

Есть ли способ увидеть все виртуальные хосты, которые использует Docker?

В этом контексте вы неправильно понимаете термин «виртуальный хост». Докер не имеет понятия о виртуальных хостах вообще. В этом контексте термин Виртуальный хост специфичен для RabbitMQ (или, скорее, AMQP, который реализован RabbitMQ). Это задокументирована в RabbitMQ documentation (курсив мой):

[...] «Виртуальный хост» (или ВХост) [...] задает пространство имен для сущностей (обменов и очередей) на которые ссылается протокол. Обратите внимание, что это не виртуальный хостинг в смысле HTTP.

При использовании rabbitmq Docker изображение, управление UI будет всегда доступен под любой имя хоста, независимо от переменной VIRTUAL_HOST среды (до тех пор, как вы используете 3-management тег этого образа) ,

Я рекомендую внимательно прочитать documentation of the rabbitmq Docker image. Там вы увидите, что изображение поддерживает переменную среды с именем RABBITMQ_DEFAULT_VHOST. Переменные VIRTUAL_HOST и VIRTUAL_PORT не оцениваются в данном изображении и не имеют отношения к эффекту.

+0

'пользовательский интерфейс управления всегда будет доступен под любым именем хоста', что вы имеете в виду? – alkis

+0

Что неважно, какое имя хоста HTTP вы используете для пользовательского интерфейса управления, будь то 'rabbitmq.docker', IP-адрес контейнера или любое другое имя хоста. Если вы сопоставляете порт 15672 с локальным хостом, 'http: // localhost: 15672' также будет работать отлично, так же, как' http: //127.0.0.1: 15672' или 'http: // [:: 1]: 15672'. – helmbert

+0

Вот что я понял, но я хотел убедиться. Вы проверили это? Потому что для меня это не так. Я уже тестировал эту возможность, и единственными хост-именами HTTP, которые работают, являются ip-адрес контейнера (который ожидается) и 'rabbitmq.docker'. – alkis