我有一个使用webpack开发服务器的应用程序。服务器代理到另一个Web API进行CRUD。我可以在本地运行时使用它,但是在构建容器时,该应用程序无法连接。
node.js - 我如何从本地主机服务?-LMLPHP
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,
      },
    },
  },
docker文件
FROM 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
此外,当我将主机从本地主机交换为 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

09-27 15:05