взаимодействие локальных площадок
VlMescher opened this issue · 5 comments
У меня 2 запущеных проекта. К примеру shop.localhost и crm.localhost
К сожалению запрос с одной площадки на апи соседней не работает.
Если проверить какой ip резолвится внутри площадки по хосту, то получаем 127.0.0.1
В итоге приходится общаться через nip.io
Хотел уточнить возможно ли, чтобы и внутри площадок резолвились корректные локальные ip адреса
Вообще так было задумано изначально, чтобы несколько запущенных проектов не пересекались и не мешали друг другу работать.
Каждый проект запускается в своей собственной сети и внутри php контейнера проекта всегда будет localhost 127.0.0.1
. Но он тут не при чем, у вас немного другая проблема.
Если я вас правильно понял, внутри одной сети docker IP адрес другого проекта резолвится как 127.0.0.1, поэтому он не выходит за пределы контейнера и пытается обратиться внутри него. Просто потому что localhost. Потому что он в принципе не должен выходить за пределы своей сети.
Это примерно как если бы вы пытались открыть сайт со своего компьютера по адресу localhost, который запущен на другом компьютере в локальной сети. При этом nip.io будет нормально работать, все правильно, потому что это внешний адрес, docker не будет искать IP внутри контейнера, а обратится во внешнюю сеть.
Из одной docker-сети в другую сеть вы сможете обратиться только по внешнему IP адресу контейнера, его можно увидеть введя команду dl ps
, но этот IP не постоянный и устанавливается Docker случайным при старте.
Спасибо за развернутый ответ. Собственно это примрно понятно, я хотел уточнить можно ли внутри этой сети резолвить ip для какого-нибудь хоста принудительно.
Если честно, в голову ничего не приходит умного. Потребуется немного переделать базовую архитектуру создания контейнеров, чтобы они запускались в одной сети. При этом контейнеры базы данных должны быть расположены либо в других сетях, либо не со стандартным портом 3306, ибо будут конфликтовать.
Да, порт php тоже будет конфликтовать, из-за того, что общая сеть. Возможно потребуется поставить nginx между traefik и контейнерами php, чтобы по хостам трафик распределял.
Кажется придется здорово так переписать конфиги docker-compose, это будет очень кастомное решение, от dl останется только traefik разве что.
итог ясен. Оно того не стоит. Спасибо большое. А ip можно задать принудительно для конейнера? Чтобы не рандомный был
В принципе возможно, но все равно придется переписать конфиги
Как пример https://jtips.dev/naznachaiem-statichieskii-ip-adries-docker-kontieinieru-i-docker-compose/