docker run 中的烧瓶主机地址

xir*_*uru 7 python flask python-3.x docker

我想在 Docker 中运行一个 Flask 应用程序,使用 Flask 简单的 http 服务器。(不是枪炮)

我遇到了主机设置问题。

在flask app.py中,它应该可以作为官方教程使用,但它不起作用:

if __name__ == '__main__':
    app.run(host='0.0.0.0')
Run Code Online (Sandbox Code Playgroud)

所以我在回答类似帖子后做了它,它突然起作用了!:

/sf/answers/3011050521/

$> flask run --host=0.0.0.0
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么第一种方法不起作用,但第二种方法有效?

小智 1

在第一个解决方案中,当您使用python3 app.py命令运行代码时,它会在主机上的 0.0.0.0 上运行。但是flask run命令直接从代码执行flask应用程序,并且不包含条件if name == ' main ' :。另一方面,当您使用python3 app.py运行代码时,名称等于' main '但是,当您使用flask run运行代码时,name等于代码中成为app的FLASK_APP变量,并且FLASK_APP变量必须与flask app包含的文件名相同。

应用程序.py

print("__name__ is :", __name__)
Run Code Online (Sandbox Code Playgroud)

python3应用程序.py

__name__ is : __main__
Run Code Online (Sandbox Code Playgroud)

应用程序.py

$> export FLASK_APP=app.py
$> flask run

...
__name__ is : app
...
Run Code Online (Sandbox Code Playgroud)