【问题标题】:ECONNREFUSED error when proxying from React to Flask running in docker-compose从 React 代理到在 docker-compose 中运行的 Flask 时出现 ECONNREFUSED 错误
【发布时间】:2020-06-05 05:04:12
【问题描述】:

我一直在讨论这个,所以最后问了。

我的开发机器上基本上有一个flask API 和一个react 前端运行。

它们通过docker-compose 在同一个虚拟网络上运行。

当我通过 5000 端口邮递到烧瓶 api 时,它运行完美,并且反应前端在 3000 端口上的浏览器中完美运行。

我编辑了 react package.json 文件并添加了"proxy": "http://localhost:5000",

然后,当运行我想要的路由时,它会在 localhost:3000/movies 上做出反应,它会尝试代理到 localhost:5000/movies,但我收到此错误:

Proxy error: Could not proxy request /movies from localhost:3000 to http://localhost:5000.
See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (ECONNREFUSED)

我尝试将该行更改为各种内容,包括我的 docker 映像名称。所以proxy": "http://image-name:5000", 和我也尝试了像proxy": "http://127.0.0.1:5000", 这样的内部 docker 网络名称,它们都给出了同样的错误。

对于除此之外我可以尝试什么,有人有什么建议吗?任何建议将不胜感激。谢谢。

【问题讨论】:

    标签: node.js reactjs flask proxy docker-compose


    【解决方案1】:

    这里是为未来的任何人准备的。

    需要使用的容器名称。所以我更新了我的docker-compose.yml:

    services:
      flask-api:
        container_name: flask-api
    

    在我的 API(烧瓶应用)中,我的 config.py 是这样的:

    SERVER_NAME = 'localhost:5000'
    

    我改成:

    SERVER_NAME = 'flask-api:5000'
    

    react package.json 更新为:

    "proxy": "http://flask-api:5000",
    

    然后在重新加载 docker-compose build --up 时它起作用了。

    react 的代理转发到烧瓶 api。所以在我的例子中 localhost:3000/movies 代理到 locahost:5000/movies 来获取我的 api 数据。

    我相信这对未来的人会有帮助。

    【讨论】:

    • 是的。但是如果你想在没有 docker 的情况下运行它怎么办。任何人都可以想到一种适用于 docker-compose 和独立开发的解决方法吗?
    猜你喜欢
    • 2020-01-03
    • 2021-02-07
    • 1970-01-01
    • 2018-12-25
    • 2021-08-27
    • 2013-10-07
    • 2022-12-21
    • 2021-12-28
    • 1970-01-01
    相关资源
    最近更新 更多