2017-02-17 10 views
1

У меня есть файл с 2-мя сервисами (контейнерами) с именем «web» и «db».Docker составить и имя хоста

{ 
    "version": "2", 
    "services": { 
     "web": { 
      "image": "nodejs:latest", 
      "ports": ["80"] 
     }, 
     "db": { 
      "image": "mysql:latest", 
      "ports": ["3306"] 
     } 
    } 
}  

Я могу получить доступ к контейнеру db из веб-контейнера, используя «db» в качестве ip для моей базы данных. Какое преимущество у меня есть, используя «имя хоста» в файле компоновки, как показано ниже?

{ 
    "version": "2", 
    "services": { 
     "web": { 
      "image": "nodejs:latest", 
      "hostname": "web", 
      "ports": ["80"] 
     }, 
     "db": { 
      "image": "mysql:latest", 
      "hostname": "db", 
      "ports": ["3306"] 
     } 
    } 
} 

ответ

3

Функция автоматического обнаружения узлов в частной сети между контейнером был введен в version '2' of docker-compose syntax. Перед тем, как вы смогли только ссылаться на контейнеры по своим псевдонимам ссылок. Были и другие решения для создания открытия - например. добавив прокси-сервер или «посольский» контейнер.

Это, как говорится, я увидел бы 3 причины для использования: имя хоста

  • открытие на основе имени службы, которые не всегда должен быть имя хоста.
  • может быть несколько имен хостов в одной службе (f.ex. web server)
  • Если вы хотите поддерживать согласованную конфигурацию между различными средами, вы бы использовали имена хостов для описания других конечных точек, которые использует ваше приложение, вместо того, чтобы полагаться на службу имена
+1

BTW: У меня есть файл с 2-мя сервисами (контейнерами) под названием «web» и «db». - это не имена контейнеров, а имена служб. Имя контейнера создается, но вы можете установить его с помощью свойства 'container_name'. –