1

Я устанавливаю Vagrant box со средой разработки. У меня есть несколько запущенных веб-приложений, несколько сервисов, база данных и докер внутри Vagrant. Большинство сервисов используются внутренне, и я делаю переадресацию портов для веб-приложений, к которым я могу получить доступ на своем хосте с помощью localhost:FORWARDED_PORT .

Но одному из этих веб-приложений требуется JavaScript, работающий в докере. Поэтому он должен получить доступ к нему из моего веб-браузера на хост-машине. Внутренне я вижу это:

4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 56:84:7a:fe:97:99 brd ff:ff:ff:ff:ff:ff
    inet 172.17.42.1/16 scope global docker0
       valid_lft forever preferred_lft forever

Служба, запущенная в Docker, предоставляет статический JS на http://172.17.0.2:4567 . Мне нужно иметь доступ к этому внутреннему адресу из веб-приложения на хост-компьютере, как мне его настроить?

2 ответа2

1

Я делаю именно такие вещи во время моей повседневной работы. Здесь необходимо учитывать две вещи:

  1. Порт службы dockerized должен быть перенаправлен на ваш vagrant vm
  2. Порт (теперь указывающий на Docker-контейнер) на блочном ящике должен быть перенаправлен на ваш физический ящик.

Поскольку я не знаю вашего сервиса dockerized, я возьму стандартный дистрибутив Dockerized Redis в качестве примера. Поскольку я работаю с fig (http://www.fig.sh/), чтобы запустить мои док-контейнеры, мне нужно будет показать вам ответ на первую часть в примере fig.yml:

redis:
  image: redis:latest
  ports:
   - "6379:6379"

Это запускает Redis Key-Value Store в док-контейнере и перенаправляет его порт 6379 на порт 6379 в бродячем окне. Теперь вы можете подключиться к Redis через localhost:6379 из INSIDE vagrant vm, так что мы на полпути.

Второй шаг - переслать это на ваш локальный компьютер, добавив это в ваш Vagrantfile:

config.vm.network :forwarded_port, guest: 6379, host: 6379

Вуаля: Теперь вы можете получить доступ к Redis через localhost: 6379 с вашего физического компьютера.

В вашем случае это означает, что вам придется изменить http://172.17.0.2:4567 на http://127.0.0.1:4567 в коде вашего веб-приложения, чтобы оно фактически использовало перенаправление портов новой настройки.

1

Вы не видите внутренний IP-адрес Docker снаружи виртуальной машины vagrant box. Но вы можете выставить в контейнере порт приложения (таким образом, это будет порт, который можно переадресовать как принадлежащий бродячей виртуальной машине), и ссылаться на этот JavaScript как на внешний IP/ имя, если бродящее окно (даже если используется SERVER_NAME env var на странице, где размещается ссылка) и соответствующий порт.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .