Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js React应用程序集代理无法与docker compose一起使用_Node.js_Reactjs_Docker_Docker Compose_Gunicorn - Fatal编程技术网

Node.js React应用程序集代理无法与docker compose一起使用

Node.js React应用程序集代理无法与docker compose一起使用,node.js,reactjs,docker,docker-compose,gunicorn,Node.js,Reactjs,Docker,Docker Compose,Gunicorn,我尝试使用docker compose构建两个容器: 反应应用程序 由gunicorn供电的烧瓶服务器 我是docker创作的,他们两个都被提升了。当我访问react时,它应该将端口为3000的react应用程序的请求代理给端口为5000的flask服务器。但我遇到了这样的情况: frontend_1 | Proxy error: Could not proxy request /loadData/ from localhost:3000 to http://backend:5000. fro

我尝试使用docker compose构建两个容器:

  • 反应应用程序
  • 由gunicorn供电的烧瓶服务器
  • 我是docker创作的,他们两个都被提升了。当我访问react时,它应该将端口为3000的react应用程序的请求代理给端口为5000的flask服务器。但我遇到了这样的情况:

    frontend_1  | Proxy error: Could not proxy request /loadData/ from localhost:3000 to http://backend:5000.
    frontend_1  | See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ECONNREFUSED).
    
    这意味着它仍然不知道后端容器的实际IP地址

    以下是一些配置:

    docker-compose.yml

    version: "3"
    
    services:
        backend:
            build: ./
            expose: 
                - "5000"
            ports: 
                - "5000:5000"
            volumes: 
                - .:/app
            command: gunicorn server:app -c ./gunicorn.conf.py
    
            networks: 
                - app-test
        frontend:
            build: ./frontend
            expose: 
                - "3000"
            ports: 
                - "3000:3000"
            volumes: 
                - ./frontend:/app
            networks: 
                - app-test
            depends_on: 
                - backend
            links:
                - backend
            command: yarn start
    
    
    networks:
        app-test:
            driver: bridge
    
    
    后端Dockerfile

    FROM python:3.7.3
    
    WORKDIR /app 
    
    COPY . /app 
    
    RUN pip install -r requirements.txt 
    
    
    FROM node:latest
    
    WORKDIR /app 
    
    COPY . /app 
    
    前端文件

    FROM python:3.7.3
    
    WORKDIR /app 
    
    COPY . /app 
    
    RUN pip install -r requirements.txt 
    
    
    FROM node:latest
    
    WORKDIR /app 
    
    COPY . /app 
    
    gunicorn.conf.py

    workers = 5
    worker_class = "gevent"
    bind = "127.0.0.1:5000"
    
    frontend package.json

    {
      "proxy": "http://backend:5000",
    }
    
    我几乎试过了网上说的每一句话,但它并不代表这个请求

    我已经知道的一些信息:

  • 两个容器都已加工
  • 我可以将内部IP从前端容器ping到后端,它会响应,因此不会出现网络问题
  • 当请求localhost:3000时,我的系统将调用Axios将POST请求(/loadData)发送到后端,代理部分将在后端执行该工作,然后该请求将成为somebackendip:5000/loadData/
  • 有人能帮我吗


    提前谢谢

    通过使用

    bind = "0.0.0.0:5000"
    

    修复了我的问题。

    尝试将gunicorn配置中的绑定更改为
    bind=“0.0.0.0:5000”
    ,并相应地将compose中后端服务的端口更改为
    “127.0.0.1:5000:5000”(最后一个是可选的)

    尝试将绑定更改为
    bind=“0.0.0:5000”
    在gunicorn conf中,并根据
    “127.0.0.1:5000:5000”更改compose中后端服务的端口(最后一个是可选的)@Nikscorp谢谢!我更改了gunicorn conf文件中的
    bind=“0.0.0.0:5000”
    ,这刚刚起作用。感谢您的帮助。不客气,请选择我的答案:)