【发布时间】:2020-01-07 04:56:26
【问题描述】:
我的 docker-compose 中有三个组件,mysql db、flask server 和 react webapp。
当我在 chrome 中向服务器发出请求时,它给了我:
选项http://server:5000/getTablesnet::ERR_CONNECTION_TIMED_OUT
但是,如果我使用 docker exec -it 然后 curl -X POST server:5000/getTables 进入反应容器,它工作正常。
这就是我在烧瓶应用程序中设置 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 应用程序时,它可以正常工作,但是如果我将它放在 docker 中,它将无法连接到外部 API。
【问题讨论】:
-
将烧瓶应用程序置于调试模式后,您的日志中是否有任何其他信息?
-
@ckaserer 如果我卷曲它,我的后控制器将记录请求信息。但是,如果我在浏览器中执行此操作,似乎控制器没有执行。
标签: reactjs docker flask networking docker-compose