我在容器内有一个烧瓶应用程序。我用
运行这个容器docker run -p 5000:5000 pyprojects_web
它回复
* Serving Flask app "debateit.py"
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
如果我跑
docker container ls
我得到了
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2221298e6e2c pyprojects_web "flask run" 12 minutes ago Up 12 minutes 0.0.0.0:5000->5000/tcp elated_joliot
如果我访问http://127.0.0.1:5000,我会:
This site can’t be reached
The web page at http://127.0.0.1:5000/ might be temporarily down or it may have moved permanently to a new web address.
ERR_SOCKET_NOT_CONNECTED
http://localhost:5000给出了类似的回应。
正常的建议是使用0.0.0.0监听容器内的所有连接 - 但我已经这样做了。这是我的应用程序:
from app import app
if __name__ == "__main__":
app.run(host="0.0.0.0")
如果我从容器内部卷曲,它的效果非常好:
docker exec -it 2221298e6e2c curl http://localhost:5000
有一个很长的HTML响应,我的服务器日志得到:
127.0.0.1 - - [04/Jun/2018 01:00:16] "GET / HTTP/1.1" 200 -
鉴于这些结果,鉴于我有一个“0.0.0.0”主机,还有什么可以尝试?
感谢。
答案 0 :(得分:4)
所以基于这些评论很明显,你实际上并没有在0.0.0.0
上运行,这可能(注意到你的command
容器),因为你正在运行我认为的更新版本的烧瓶你必须将一些args传递给flask run
。
尝试flask run --host=0.0.0.0
作为容器中的命令,我认为这可能会解决您的期望:)
Flask Docs的更多信息。