У меня есть приложение-узел, работающее в одном контейнере докера, база данных mongo на другом и база данных redis на третьем. В разработке я хочу работать с этими тремя контейнерами (не загрязняя мою систему установками базы данных), но в процессе производства я хочу, чтобы базы данных устанавливались локально и приложение в докере.Приложение Docker и база данных в разных контейнерах
Приложение предполагает, что базы данных работают на локальном хосте. Я знаю, что могу пересылать порты из контейнеров на хост, но могу ли я пересылать порты между контейнерами, чтобы приложение могло обращаться к базам данных? Переадресация портов теми же портами в разных контейнерах создает столкновение.
Я также знаю, что контейнеры будут находиться в одной и той же мостовой сети, и, используя команду «curl», я обнаружил, что они подключены, и я могу получить к ним доступ, используя их относительные IP-адреса. Однако я надеялся, что этот проект будет работать без изменения спецификации «localhost» в коде.
Есть ли способ переместить эти порты? Возможно, в файле dockerfile моего приложения с помощью iptables? Я хочу, чтобы контейнер моего приложения мог получить доступ к mongoDB, используя, например, «localhost: 27017», даже если они находятся в отдельных контейнерах.
Я использую Docker для Mac (V 1.13.1). В производстве мы будем использовать Docker на сервере Ubuntu.
Я немного нуб. Спасибо за помощь.
Действительно ли это является «локальным ходом», или вы можете иметь «db: port» и «redis: port» для доступа к базам данных? Затем просто установите значения для 'db' и' redis' на основе настройки (например [доступ к локальному хосту машины] (http://stackoverflow.com/a/24326540/2127492)) – jrbeverly
Вы можете сделать переменные среды для хранения этих адреса. – hya
@ Ken Вы решили свою проблему? – Salem