如何在docker中映射webpack-dev-server的不同端口

时间:2018-05-19 16:45:49

标签: docker webpack-dev-server sockjs

我设法在docker容器中运行webpack-dev-server。

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以获取更新消息,最后,浏览器显示该页面。完美!

但是,如果我使用不同的端口映射运行docker容器,则会出错。

假设我使用-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

由于此故障仅在端口映射不匹配时发生,我可以通过限制端口映射来避免这种情况。但这是一个非常严格的约束,我并不真正想要站在一起。我可能希望每隔一段时间同时运行该映像的两个实例,这种约束会导致端口冲突,因为内容暴露的端口号在构建时是固定的。

有没有办法解决这个问题?

我考虑在构建时公开一系列端口。这有意义吗?

0 个答案:

没有答案