使用webpack dev server将webpack 2的请求代理到docker容器中的后端api
我试图用docker容器代理我的http请求到后端运行的express服务器,但我在浏览器控制台中得到了http 504,并且在docker终端中出现了以下错误使用webpack dev server将webpack 2的请求代理到docker容器中的后端api,docker,docker-compose,dockerfile,webpack-dev-server,webpack-2,Docker,Docker Compose,Dockerfile,Webpack Dev Server,Webpack 2,我试图用docker容器代理我的http请求到后端运行的express服务器,但我在浏览器控制台中得到了http 504,并且在docker终端中出现了以下错误 HPM] Error occurred while trying to proxy request /api/getData from localhost:8080 to http://localhost:3001 (ECONNREFUSED) (https://nodejs.org/api/errors.html#errors_com
HPM] Error occurred while trying to proxy request /api/getData from localhost:8080 to http://localhost:3001 (ECONNREFUSED) (https://nodejs.org/api/errors.html#errors_common_system_errors)
这是我的docker-compose.yml文件
app:
build: .
ports:
- "8080:8080"
links:
- back
back:
build: ./server
ports:
- "3001:3001"
我还为每个容器提供了2个docker文件
要在一个容器中运行webpack dev server 2,我有以下Dockerfile
FROM node
WORKDIR /usr/src/app
ADD . /usr/src/app
RUN npm install
CMD ["npm", "run","dev"]
要运行包含express服务器的容器的Dockerfile是
FROM node
WORKDIR /usr/src/app
ADD . /usr/src/app
RUN npm install
EXPOSE 3001
CMD ["npm", "run","serve"]
请使用webpack 2版本并运行webpack dev server查找我的webpack.config.js的一段代码
//.... all required dependency for webpack
devServer: {
host:'0.0.0.0',
contentBase: path.join(__dirname, "dist"),
compress: false,
proxy: {
"/api": {
"target": "http://0.0.0.0:3001",
"secure": false
},
},
hot:true
},
devtool: 'inline-source-map',
// ...all required plugins and moduloes for compiling my app
我正在package.json中使用以下命令运行我的应用程序
"scripts": {
"serve": "nodemon server/server.js --ignore components",
"dev": "webpack-dev-server",
}
我还提到了以下链接
但是webpack2现在不记录链接中列出的参数。我也试着使用额外的参数,但是没有用
Webpack2是否提供了任何changeOrigin参数来代理请求,因为我认为WebpackDev服务器正在考虑在Webpack1中没有changeOrigin参数的情况下,Origin是相同的
任何帮助都将不胜感激
提前谢谢。只需发布答案,以便对像我这样的人有用。我在webpack config中将请求代理到容器名,而不是本地主机。这是一个愚蠢的小错误,但我花了全部时间才弄明白
proxy: {
"/api": {
"target": "http://back:3001", //back is the service name in which my node server is running. refer docker-compose.yml
"secure": false
},
},
只是把答案贴出来,这样像我这样的人就可以用了。我在webpack config中将请求代理到容器名,而不是本地主机。这是一个愚蠢的小错误,但我花了全部时间才弄明白
proxy: {
"/api": {
"target": "http://back:3001", //back is the service name in which my node server is running. refer docker-compose.yml
"secure": false
},
},