在docker容器上无法访问flaskrestplus微服务

2024-05-15 16:53:59 发布

您现在位置:Python中文网/ 问答频道 /正文

这是一个简单的flaskrestplus微服务,带有一个echo端点,可以找到here 默认情况下在端口5000上本地运行:

cd $src_folder
python app.py

enter image description here

但是当运行在带有简单Dockerfile的docker容器中时。。。在

^{pr2}$

…如果端口映射/公开正确,则由于某些原因无法访问:

    docker run -d -h $HOST --name $CONTAINER \ 
--publish $SERVER_PORT:$CONTAINER_PORT $DOCKER_HUB_IMG:$IMAGE_VERSION

…即使容器日志显示它已正确启动:

(venv) .../flaskexample$ docker logs flaskexample 
2017-09-17 18:23:12,505 - werkzeug - INFO -  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
2017-09-17 18:23:12,506 - werkzeug - INFO -  * Restarting with stat
2017-09-17 18:23:13,016 - werkzeug - WARNING -  * Debugger is active!
2017-09-17 18:23:13,021 - werkzeug - INFO -  * Debugger PIN: 246-320-471
(venv) .../flaskexample$ 

…而且在docker ps中看起来也不错:

(venv) .../flaskexample$ docker ps
CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS              PORTS                                                                    NAMES
9d90da7ae192        kakicode/flaskexample:latest   "python ./app.py"        4 minutes ago       Up 4 minutes        0.0.0.0:5000->5000/tcp                                                   flaskexample

……但出于某种原因,我一直得到:

enter image description here

…而且我已经没有办法了…我不得不说,我没有在flask restplus配置中提供服务器名称,因为它没有任何区别,仍然会遇到相同的问题,而且其他所有需要端口映射/公开的容器在我的docker守护程序中都能正常工作。 我在Ubuntu14.04.5中运行这些实验。在

…有没有人在那里遇到过类似的flask restplus?在

提前谢谢你们


Tags: dockerpyimageinfoappvenvportcontainer
1条回答
网友
1楼 · 发布于 2024-05-15 16:53:59

你的问题是你会在应用程序副本在

app.run(debug=True, port=5000)

或者只是

^{pr2}$

默认情况下,它的作用是监听127.0.0.1。但是为了使端口映射工作,它必须监听容器内的所有接口。所以你应该用

app.run(debug=True, port=5000, host="0.0.0.0")

有关进一步参考,请参见:

http://flask.pocoo.org/docs/0.12/api/?highlight=run#flask.Flask.run

相关问题 更多 >