Как я могу инвертировать EXPOSE порт в контейнер? - PullRequest
0 голосов
/ 25 апреля 2018

Я новичок в Docker и, возможно, я не ищу нужное место в документации, потому что я не мог найти способ сделать то, что я называю "обратный EXPOSE".

Так, например, яесть одно веб-приложение, которое EXPOSE 80.Это же приложение использует базу данных postgresql.Когда я занимаюсь локальной разработкой, она работает нормально, потому что я подключаюсь к localhost:5432, но когда я упаковываю приложение в приложение, оно говорит что-то вроде «отказано в соединении».Я думаю, что философия Docker заключается в том, чтобы как можно больше заключить в контейнеры и заставить эти контейнеры взаимодействовать друг с другом через сеть Docker.Но мне любопытно, можно ли вообще сказать, что localhost:5432 в моем контейнере фактически ссылается на порт 5432 на фактической машине, на которой размещен мой контейнер.

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Локальный хост внутри контейнера - это не ваш докер, это сеть с пространством имен внутри контейнера. Поэтому, если вы попытаетесь установить связь с localhost или 127.0.0.1 внутри контейнера, он будет взаимодействовать только с другими приложениями, работающими внутри этого контейнера.

Вместо этого вы должны использовать маршрутизируемый IP-адрес хоста, чтобы запросы могли выходить из контейнера и возвращаться в интерфейс хоста докера для доступа к приложениям, работающим вне контейнера.

0 голосов
/ 25 апреля 2018

Когда приложение работает в контейнере, вы должны использовать IP:5432 например 192.168.99.100:5432 хоста, а не localhost.

При использовании localhost в контейнере это относится к localhost (127.0.0.1) контейнера, а не хоста.

...