响应Webapp请求到Flask服务器返回ERR_CONNECTION_TIMED_OUT

时间:2020-01-07 04:56:26

标签: reactjs docker flask networking docker-compose

我在docker-compose中有三个组成部分,分别为mysql dbflask serverreact webapp

当我向Chrome请求服务器时,它会给我:

OPTIONS http://server:5000/getTables net :: ERR_CONNECTION_TIMED_OUT

但是,如果我先使用docker exec -it然后使用curl -X POST server:5000/getTables进入react容器,它将正常工作。

这是我在flask应用程序中设置cors的方式:

@app.route('/getTables', methods=['GET', 'POST', 'OPTIONS'])
@cross_origin(origin='*')

这是我的docker-compose.yaml:

version: '3'

services:
  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: 'TEST'
      MYSQL_USER: 'xxx'
      MYSQL_PASSWORD: 'xxx'
      MYSQL_ROOT_PASSWORD: 'xxx'
    ports:
      - '3306:3306'
    expose:
      - '3306'
    volumes:
      - my-db:/var/lib/mysql
  server:
    build: ./flask
    restart: on-failure
    ports:
      - '5000:5000'
    expose:
      - '5000'
    volumes:
      - ./flask:/server
  web:
    build: ./react
    ports:
      - 80:3000
volumes:
  my-db:

这是烧瓶服务器日志:

server_1  |  * Serving Flask app "app" (lazy loading)
server_1  |  * Environment: production
server_1  |    WARNING: This is a development server. Do not use it in a production deployment.
server_1  |    Use a production WSGI server instead.
server_1  |  * Debug mode: off
server_1  |  * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)

我的docker-compose文件有问题吗?预先感谢您的帮助!

编辑 似乎与我的React Webapp容器网络设置有关的问题。当我在本地运行react app时,它可以正常工作,但是如果我将其放在docker中,它将无法连接到外部API。

1 个答案:

答案 0 :(得分:0)

如果您可以从主机向localhost:5000发送请求,那么您的docker-compose就可以了。您只需要添加

    127.0.0.1       server

托管文件。