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 ответов

16 просмотров

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 можно будет принимать запросы и от других компьютеров в сети. Иногда могут требоваться такие извращения, но крайне редко

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта