node.js - 我如何从本地主机服务?

标签 node.js docker webpack-dev-server

我有一个使用 webpack 开发服务器的 react 应用程序。服务器代理到另一个用于 CRUD 的 Web api。我可以在本地运行时使用它,但是在构建容器时,应用程序无法连接。
Error
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,
      },
    },
  },
dockerfile
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
此外,当我将主机从 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/

相关文章:

javascript - 等待另一个请求再响应

node.js - Node/Express 服务器随机跳过静态文件请求

docker - 两个docker容器无法通信

docker - 如何核对我的 Docker 容器内的所有内容并开始一个新容器?

node.js - 仅在对 master 发出合并请求时运行 gitlab-ci.yml

javascript - 什么是 WebSocket 子协议(protocol)?

docker - 如何将最新的Docker镜像推送到Docker Hub?

docker - 如何以编程方式监控 docker 容器是否退出?

javascript - 未生成 Webpack 捆绑文件

webpack-dev-server - 如何使用 Gatsby 和自定义 Webpack 配置进行代理 (netlify-lambda)