Как сопоставить другой порт для webpack-dev-server в докере - PullRequest
0 голосов
/ 19 мая 2018

Мне удалось запустить webpack-dev-server в контейнере Docker.

docker run -p 9000:9000 --other-arguments-such-as-volume-mounting-etc my-image

Webpack-dev-server запускается внутри контейнера, и посещение браузера выглядитнапример:

browser  --[visits]-->  host:9000  --[map]-->  container:9000 
                                               (webpack-dev-server is listening here)

Затем webpack-dev-server отвечает на страницу сокетом, настроенным для подключения к hostname:9000 для сообщений об обновлениях, и, наконец, браузер отображает страницу.Отлично!

Однако, если я запускаю контейнер докера с другим отображением портов, все идет не так.

Предположим, что я запускаю контейнер с -p 9001:9000 и посещения браузера localhost:9001.

browser  --[visits]-->  host:9001  --[map]-->  container:9000
                               ^
                       note the difference here 

Та же страница будет доставляться из контейнера и отображаться в браузере.НО, поскольку страница точно такая же, код сокета на странице будет пытаться подключиться к hostname:9000, где номер порта 9000 настроен внутри контейнера как конфигурация webpack-dev-server, а затем неизбежно завершится неудачей.

socket code ----> host:9000 --X--> no where

Так как этот сбой происходит только при несовпадении сопоставления портов, я могу избежать этого, ограничив сопоставление портов.Но это очень строгое ограничение, с которым я действительно не хочу мириться.Я могу захотеть запускать два экземпляра этого образа одновременно и время от времени, и это ограничение может привести к конфликту портов, так как номер порта, отображаемый через contaienr, фиксируется во время сборки.

Есть ли способсправиться с этим?

Я собираюсь предоставить диапазон портов во время сборки.Это имеет смысл?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...