我在docker-compose中有三个组成部分,分别为mysql db
,flask server
和react 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。
答案 0 :(得分:0)
如果您可以从主机向localhost:5000
发送请求,那么您的docker-compose就可以了。您只需要添加
127.0.0.1 server
托管文件。