flask-restplus微服务在Docker容器上无法访问

这是关于一个带有echo端点的简单的flask-restplus microservice,可以在这里find,默认情况下在端口5000上运行:

cd $src_folder python app.py 

在这里输入图像说明

但是在一个简单的Dockerfile的docker容器中运行时…

 RUN pip install --no-cache-dir -r requirements.txt CMD [ "python", "./app.py" ] 

…正确的端口映射/暴露,由于某种原因无法访问:

  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 

..但由于某种原因,我不断得到:

在这里输入图像说明

…我已经没有想法…不得不说,我没有在flask-restplusconfiguration中提供SERVER_NAME,因为它没有任何区别,仍然有同样的问题,并且每个其他容器都需要端口映射/暴露在我的docker守护进程中正常工作。 我正在Ubuntu 14.04.5中运行这些实验。

有没有人遇到类似的瓶子restplus在那里?

事先感谢你们

你的问题是,你会在你的app.py中使用下面的东西

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

要不就

 app.run() 

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

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