У меня есть три компонента в моем 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.