http-server部署的前端是把需暴露的文件都推送到浏览器,因此文件中标识的URL是由浏览器发起的,如果是把http-server打包成docker镜像部署在服务器中,不能以docker容器作为请求的发起方,而应该以浏览器为发起方。
这个问题困扰了我两天,因为我的目的是前端项目所在容器去访问一个后端服务容器,于是在页面开发中我直接把后端服务容器名作为URL的host,这直接导致浏览器无法访问。
正确的做法是在部署http-server的时候指定pass路由都代理到指定baseURL去,并在axios发起的请求中,都不指定baseURL。
...
ENTRYPOINT [ "http-server" ]
CMD [ "--proxy", "http://{容器名}:{容器端口}" ]
当然得保证http-server所在容器与代理容器在一个网段