Как мой контейнер docker может запросить локальный веб-сервер на хосте по имени домена? - PullRequest
0 голосов
/ 29 мая 2020

Мой первый веб-сервер (без Docker) прослушивает http://127.0.0.1: 5000 . У меня есть прокси nginx (Docker) для пересылки d5000.local: 80 на http://127.0.0.1: 5000 . Файл моих хостов сопоставляет домен с IP:

#etc/hosts
127.0.0.1 d5000.local

Теперь я запускаю curl -v http://d5000.local на своем хосте. И все работает нормально.

У меня есть второй веб-сервер в контейнере docker (мостовая сеть) на моей машине разработки. Если я go в контейнер и запускаю curl -v http://d5000.local, я получаю ответ от второго веб-сервера, а не от первого веб-сервера. Кажется, что контейнер использует файл hosts хоста. Контейнер запрашивает свой собственный адрес поиска вместо адреса поиска хоста.

Как я могу запросить веб-сервер на хосте из моего docker контейнера по имени домена (d5000.local)? Нужен ли мне DNS? Что лучше всего подходит для машины разработки?

Подробности: мне нужно вызвать первый веб-сервер из моего браузера и со второго веб-сервера с тем же адресом. Это OAuth-сервер с передним и обратным каналами.

1 Ответ

0 голосов
/ 08 июля 2020

Работает с extra_hosts в docker -compose.yml. --add-host тоже должен работать (https://docs.docker.com/engine/reference/commandline/run/#add -entries-to-container-hosts-file --- add-host ).

# docker-compose.yml
services:
  secondWebserver:
    # ...
    extra_hosts: 
      - "d5000.local:172.17.0.1"

На моем компьютере он работает с IP 172.17.0.1. Если есть лучший способ, оставьте комментарий или напишите ответ.

https://docs.docker.com/network/network-tutorial-standalone/#use -user-defined-bridge-networks

... сеть моста по умолчанию, шлюз которой 172.17.0.1. Точный IP-адрес может быть другим в вашей системе.

...