172 похожих чатов

Возвращаясь к вопросу связи между приложениями в контейнерах distance-frontend

0.0.0.0:3000->3000/tcp, :::3000->3000/tcp front_distance
distance 0.0.0.0:49284->3001/tcp, :::49284->3001/tcp back_distance
redis:alpine 6379/tcp back_redis
mongo:latest 0.0.0.0:49195->27017/tcp, :::49195->27017/tcp back_mongo
jwilder/nginx-proxy 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp nginx-proxy
jrcs/letsencrypt-nginx-proxy-companion letsencrypt-nginx-proxy-companion

в конфиге указана сеть
networks:
default:
external:
name: nginx-proxy

бэкенд висит на порту 49284 - этот порт динамический, потому что в конфиге указано ports: - 3001 (без второго числа через двоеточие)
как его контейнер с Nginx тогда видит? понятно что сеть внутренняя одна, но порт то динамический

11 ответов

5 просмотров

ports влияет лишь на доступ с хоста, но не на внутренние сети между контейнерами

Алекс- Автор вопроса
Максим Мартынов
ports влияет лишь на доступ с хоста, но не на внут...

то есть независимо от того, какой внутри порт у приложения(а он тут динамический) другой контейнер (Nginx) найдет его все равно? А как? в Nginx нет никакого указания, ни как искать запущенное приложение, ни портов не указано, как он запросы тогда проксирует именно на бэк?

в контейнере с приложением есть expose? nginx-proxy вроде на эту директиву смотрел

Алекс- Автор вопроса
Aleksandr F.
в контейнере с приложением есть expose? nginx-prox...

в конфиге докер образа нету и в конфиге docker-compose тоже нету и в приложении нету

Алекс
то есть независимо от того, какой внутри порт у пр...

ports не управляет тем, какой порт слушает приложение внутри контейнера. Приложение всегда слушает порт, который задан его собственными настройками или зашит в коде. В данном случае это порт 3001. А ports лишь пробивает рандомную дырку в изоляции контейнера и перенаправляет из нее запросы на 3001 порт внутри контейнера, чтобы можно было делать запросы к приложению с хоста или внешнего мира

Алекс- Автор вопроса
Максим Мартынов
ports не управляет тем, какой порт слушает приложе...

ну выходит что бэк(приложение) внутри контейнера висит на 3001 порту на локалхосте сам контейнер пробрасывает изнутри порт 49284 наружу на порт 3001 (0.0.0.0:49284->3001) nginx ищет что? в конфиге ни ни имени контейнера, ни порта не указано же, как ищет то?

Алекс
ну выходит что бэк(приложение) внутри контейнера в...

этот nginx подслушивает докер сокет и инспектирует стартующие контейнеры чтобы определить какой трафик на них роутить

Алекс- Автор вопроса
Vladimir Chernyshev
этот nginx подслушивает докер сокет и инспектирует...

во! вот теперь немного яснее вроде это выходит что он как раз смотрит на /tmp/docker.sock:ro проброшенный снаружи..? сокет это вроде бы сервис работающий?

Алекс
во! вот теперь немного яснее вроде это выходит что...

Сервис докера постоянно запущен на хосте, и соответственно именно он и занимается управлением контейнерами, сетями, проброса и портов и т.п. Сокет - аналог порта, в который можно отправлять запросы (записывать), но у него есть путь на диске и его можно пробросить в контейнер как обычный файл. Так консольные команды docker и docker-compose общаются с сервисом докера. Можно настроить докер сервер так, чтобы тот слушал порт, тогда вместо проброса файла можно будет обращаться к серверу по сети, а в случае прослушивания адреса 0.0.0.0 можно будет принимать запросы и от других компьютеров в сети. Иногда могут требоваться такие извращения, но крайне редко

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

Обсуждают сегодня

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
еще вопрос, допустим мы создадим char массив из 10 элементов и присвоим ему через сканф 10 символов. и выведем все символы. Хотел спросить последний элемент /0 будет включать...
Anthem
11
открыть папку в проводнике: 1 - ShellExecute 2 - ExecuteProcess 3 - OpenDocument что лучше выбрать?
Alexey Kulakov
12
Где в Астане можно купить мясо для шашлыков?
Dancing Іңұқәһүғө
21
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
Карта сайта