将服务工作者与Docker容器内的Webpack开发服务器一起使用

时间:2019-01-25 09:58:39

标签: javascript docker webpack service-worker webpack-dev-server

我正在尝试使用Webpack和Docker在Web应用程序内部使用服务人员。

我目前所做的一切都工作正常(服务人员,webpack配置,人员注册...)

实际上我的应用程序在Docker容器中运行,在这个容器中,我可以启动Webpack构建来创建我的所有JS文件。

但是现在我希望能够与服务工作者一起使用webpack开发服务器和HMR。

为此,我使用https://github.com/oliviertassinari/serviceworker-webpack-plugin正确地引用了manifest.json内部的服务工作者的引用

然后,当我通过Web浏览器访问我的应用程序时,除我的工作人员外,所有已建资产都被发现。

我在Docker容器中使用(我使用webpack-encore)运行开发服务器

encore dev-server --hot --host 0.0.0.0 --port 8080

要加载我的资产,浏览器会在0.0.0.0:8080上请求它们,但是我的工作人员是从localhost:8000注册的,因此请求失败并显示404错误,因为工作人员位于0.0.0.0:8080/sw.js而不是{{1} }。

我想知道是否有可能解决此问题并使我的服务工作者在docker容器上的webpack-dev-server内部工作。

我知道服务人员仅在听其范围,在我的情况下为localhost:8080/sw.js,但webpack-dev-server是localhost:8000/*

这就是为什么我问是否可以更改此行为以使其正常工作,以及是否有人已经存在此问题的原因。

谢谢

1 个答案:

答案 0 :(得分:0)

您需要公开Docker容器中的端口8000和端口8080。您必须公开Docker容器中的多个端口,以便在不同端口上使用多个Web服务。

docker run -p 8080:8080 -p 8000:8000

Official documentation