Я запускаю Docker в Windows (а не на родную версию, то есть ту, которая работает на виртуальной docker-machine
через docker-machine
).
В настоящее время у меня есть сайты доступа, например:
192.168.99.100:8080 for website 1 192.168.99.100:8081 for website 2 192.168.99.100:8082 for website 3
Это настоящая боль по очевидным причинам.
Я хочу быть в состоянии сделать это, как я использовал это с Apache Virtual Hosts, где я изменяю файл hosts
а затем вместо этого просто набираю что-то вроде: website1.dev
.
Как я могу это сделать для контейнеров Docker?
Моим первым решением было просто добавить следующие файлы хостам на мой компьютер Windows следующим образом:
192.168.99.100 docker.dev
Однако docker.dev
будет пересылать только 192.168.99.100:80
(т. docker.dev
Веб-сайт 1) из-за того, что вы не можете размещать порты в файле hosts.
192.168.99.100 – это IP-адрес докер-машины: для присвоения имени этому IP-адресу вам необходимо будет изменить файл хостов Windows самостоятельно.
И это предполагает, что IP-адрес докерной машины VM исправлен: см. Мой сценарий в этом ответе .
Чтобы на самом деле перенаправить на правильный сервер Apache в виртуальной машине, вам понадобится другой контейнер, который будет:
проанализируйте URL-адрес и прокси-пропуск (перенаправление) в правый фактический URL-адрес: порт.
http://website1.dev => redirect to port 8080 http://website2.dev => redirect to port 8081 http://website3.dev => redirect to port 8082
(с website1.dev
, website2.dev
и website3.dev
все добавлены в файл хостов Windows с тем же адресом 192.168.99.100)
Например, проверьте трейфик
Это отличается от имени хоста контейнера, как видно из других контейнеров.
docker-compose extra-host
действительно эквивалентен docker run --add-host
Но docker-compose может использовать hostname:
напрямую, чтобы исправить имя хоста в контейнере.
Этого должно быть достаточно для ссылки на каждый контейнер по его названию.