/Я использую Docker бета на макинтош есть некоторые услуги, указанные в service-a/docker-compose.yml
:хост Access машины DNS из Докер контейнера
version: '2'
services:
service-a:
# ...
ports:
- '4000:80'
Я тогда установить следующее /etc/hosts
:
::1 service-a.here
127.0.0.1 service-a.here
и у меня есть сервер nginx
, на котором работают прокси service-a.here
, до localhost:4000
. Так что на моем mac я могу просто запустить: curl http://service-a.here
. Все это прекрасно работает.
Теперь я строй другой службы, service-b/docker-compose.yml
:
version: '2'
services:
service-b:
# ...
ports:
- '4001:80'
environment:
SERVICE_A_URL: service-a.here
service-b
потребность service-a
пару вещей:
- Необходимо перенаправить пользователь в браузере к
$SERVICE_A_URL
- Он должен выполнять HTTP-запросы до
service-a
, также используя$SERVICE_A_URL
С помощью этой настройки работает только перенаправление (1.). HTTP-запросы (2.) не работают, потому что контейнер service-b
не имеет понятия service-a.here
в его DNS.
Я попытался добавить service-a.here
, используя конфигурационную переменную add_hosts
, но я не болен, что ее установить. localhost
не будет работать, конечно.
Отметьте, что я действительно хочу, чтобы файлы, составляющие докеры, были разделены (присоединение к ним не помогло бы решить мою проблему), потому что у них уже есть много служб, работающих внутри них.
Есть ли способ получить доступ к разрешению DNS на локальном хосте из контейнера докеров, так что, например, curl service-a.here
будет работать изнутри контейнера?
Это работает! Для одного файла 'docker-compose.yml'. Не для нескольких 'docker-compose.yml'. – romeovs
Думаю, мне придется прибегнуть к «external_links»: / – romeovs