@Anrek

По какому принципу ставятся порты в связке docker-compose и nginx?

Есть связка docker-compose и nginx. Как я прочитал, в docker-compose есть 3 варианта проставить порты у services:
- ports
- expose
- не ставить вообще
Я смотрел примеры и не совсем понял когда какой. Мне видится, что если использовать nginx как обратный прокси для контейнеров, то ports точно использовать не нужно. Потому что у nginx же наружный порт открыт. А если services на разных серверах (и тогда нужно наружный порт слушать), то тогда вместо компоуз рекомендуют кубер использовать.

Вопросы:
1) Для чего может быть нужен Ports у контейнеров приложения в связке docker-compose и nginx (если nginx уже слушает снаружи)? Один из примеров с ports
2) В каком случае порты можно не ставить? В примере выше в некоторых services порты не проставлены. Я бы вообще не ставил в данной связке, опять же зачем, если идентификатор (название контейнера) уже есть и опять же все находится на 1 машине (используем компоуз). На случай если будут названия контейнеров повторяться может?
  • Вопрос задан
  • 184 просмотра
Решения вопроса 1
karabanov
@karabanov
Системный администратор
expose - скорее для наглядности и порт в хостовую систему он не "пробрасывает".

ports - действительно "пробрасывает" порт в хостовую систему.

1) Для чего может быть нужен Ports у контейнеров приложения в связке docker-compose и nginx (если nginx уже слушает снаружи)? Один из примеров с ports

Возможно, чтобы дать доступ к приложению "напрямую" c другой машины, минуя Nginx или балансировщик.

2) В каком случае порты можно не ставить?

Ды в общем-то в любом, когда в этом нет явной необходимости.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы