我有一个使用 webpack 开发服务器的 react 应用程序。服务器代理到另一个用于 CRUD 的 Web api。我可以在本地运行时使用它,但是在构建容器时,应用程序无法连接。
Webpack 配置
devServer: {
contentBase: resolve(__dirname, 'dist'),
host: 'localhost',
port: 3001,
hot: true,
open: true,
inline: true,
proxy: {
'/api': {
target: 'http://localhost:4567/streams',
secure: false,
pathRewrite: { '^/api': '' },
changeOrigin: true,
},
},
},
dockerfileFROM node:12-alpine
WORKDIR /app
COPY ./package*.json ./
RUN npm ci
COPY . ./
docker 撰写version: '3.7'
services:
web:
container_name: fm-admin
restart: always
build:
context: .
ports:
- '3001:3001'
command: npm start
environment:
- CHOKIDAR_USEPOLLING=true
stdin_open: true
此外,当我将主机从 localhost 交换到 0.0.0.0 时,我收到以下错误[HPM] Error occurred while trying to proxy request from 0.0.0.0:3001 to http://localhost:4567/streams (ECONNREFUSED) (https://nodejs.org/api/errors.html#errors_common_system_errors)
但是流 api 正在运行。希望我能在这里得到一些帮助。
最佳答案
问题中没有非常准确地描述整个上下文,尤其是在 'http://localhost:4567
监听的服务。
我假设 target: 'http://localhost:4567/streams'
在容器内执行,该容器正在监听 :3000
以尝试代理到 :4567
。
如果这是真的,那么缺乏连接是正常的。在容器内使用 localhost
时,容器将尝试在 :4567
上代理到自身。
如果您尝试访问正在监听主机上的 :4567
的服务,您可能需要使用 docker0
接口(interface)的 IP 地址,而不是 this post 中建议的 localhost
。
关于node.js - 我如何从本地主机服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63219878/