Реагируйте на запрос веб-приложения на flask возвращение сервера ERR_CONNECTION_TIMED_OUT - PullRequest
0 голосов
/ 07 января 2020

У меня есть три компонента в моем docker -композите, mysql db, flask server и react webapp.

Когда я делаю запрос к серверу в chrome, он дает мне:

ОПЦИИ http://server: 5000 / getTables net :: ERR_CONNECTION_TIMED_OUT

Но если я попаду в контейнер реакции, используя docker exec -it и затем curl -X POST server:5000/getTables, все работает нормально.

Вот как я настраивал cors в приложении flask:

@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:

Это журнал flask -сервера:

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 -композиционным файлом? Заранее спасибо за помощь!

РЕДАКТИРОВАТЬ Похоже, проблема связана с моей настройкой сети контейнера веб-приложения. Когда я запускаю приложение реагировать локально, оно работает нормально, но не подключается к внешнему API, если я помещу его в docker.

1 Ответ

0 голосов
/ 07 января 2020

Если вы можете отправить запрос на localhost:5000 со своего хост-компьютера, тогда ваш docker -композиция в порядке. Вам просто нужно добавить

    127.0.0.1       server

в ваш файл hosts.

...