gpt4 book ai didi

docker - docker 容器的 webpack-dev-server 代理

转载 作者:IT老高 更新时间:2023-10-28 21:36:03 24 4
gpt4 key购买 nike

我有 2 个使用 docker-compose 管理的 docker 容器,似乎无法正确使用 webpack 将某些请求代理到后端 api。

docker-compose.yml:

version: '2'

services:
web:
build:
context: ./frontend
ports:
- "80:8080"
volumes:
- ./frontend:/16AGR/frontend:rw
links:
- back:back
back:
build:
context: ./backend
expose:
- "8080"
ports:
- "8081:8080"
volumes:
- ./backend:/16AGR/backend:rw

服务 web 是一个由 webpack-dev-server 提供服务的简单 react 应用程序。back 服务是一个节点应用程序。

从我的主机访问任何一个应用程序都没有问题:

$ curl localhost
> index.html
$ curl localhost:8081
> Hello World

我还可以从 web 容器 ping 和 curl back 服务:

$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
73ebfef9b250 16agr_web "npm run start" 37 hours ago Up 13 seconds 0.0.0.0:80->8080/tcp 16agr_web_1
a421fc24f8d9 16agr_back "npm start" 37 hours ago Up 15 seconds 0.0.0.0:8081->8080/tcp 16agr_back_1

$ docker exec -it 73e bash
$ root@73ebfef9b250:/16AGR/frontend# curl back:8080
Hello world

但是我的代理有问题。Webpack 以

开头
webpack-dev-server  --display-reasons --display-error-details --history-api-fallback --progress --colors -d --hot --inline --host=0.0.0.0 --port 8080

配置文件是

前端/webpack.config.js:

var webpack = require('webpack');
var config = module.exports = {
...
devServer: {
//redirect api calls to backend server
proxy: {
'/api': {
target: "back:8080",
secure: false
}
}
}
...
}

例如,当我尝试在我的应用程序中使用链接请求/api/test 时,我得到一个一般性错误,链接和谷歌并没有太大帮助:(

[HPM] Error occurred while trying to proxy request /api/test from localhost to back:8080 (EINVAL) (https://nodejs.org/api/errors.html#errors_common_system_errors)

我怀疑有些奇怪的事情,因为代理在容器上,请求在本地主机上,但我真的不知道如何解决这个问题。

最佳答案

我想我设法解决了这个问题。只需使用以下内容更改 webpack 配置

  devServer: {
//redirect api calls to backend server
proxy: {
'/api': {
target: {
host: "back",
protocol: 'http:',
port: 8080
},
ignorePath: true,
changeOrigin: true,
secure: false
}
}
}

关于docker - docker 容器的 webpack-dev-server 代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40126529/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com