docker - Docker Flask,卡在“等待来自本地主机的响应”
问题描述
我试图在 Docker 中运行一个测试 Flask,但由于某种原因,我无法从主机连接到它,文件的组成是:
pyweb/
|app.py
|Dockerfile
|___app/
|__init__.py
文件内容: Dockerfile:
FROM python:2.7
COPY . /pyweb
WORKDIR /pyweb
RUN pip install flask
RUN export FLASK_APP=app.py
ENTRYPOINT ["python"]
CMD ["app.py"]
应用程序.py:
from flask import Flask
from app import app
应用程序/初始化.py:
from flask import Flask
app = Flask(__name__)
@app.route('/')
@app.route('/index')
def index():
return "Hello, World!"
app.run(host='0.0.0.0')
运行 docker 文件并使用 启动容器后docker run -d -p 5000:5000
,响应为
* Serving Flask app "app" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
但是我无法从主机连接,它没有响应
解决方案
好吧,一年多前我在一次采访中遇到了同样的问题,直到今天我仍然感到困惑。
我不知道为什么在使用app.run()
.
直接使用烧瓶命令行启动应用程序时,它以某种方式工作正常。
Dockerfile 看起来像这样:
FROM python:2.7
COPY . /pyweb
WORKDIR /pyweb
RUN pip install flask
ENV FLASK_APP=app.py
CMD ["flask", "run", "--host", "0.0.0.0"]
你可以app.run(host='0.0.0.0')
从__init__.py
文件中删除。
稍后我可能会花一些时间尝试了解为什么您的原始实现无法按预期工作。我对烧瓶了解不多,但我在您的代码中没有发现任何问题。
推荐阅读
- node.js - 如何在使用 express/nodejs/passport 重定向时使用会话或 cookie 传递数据?
- ios - 调用 CMSensorRecorder 加速度计记录以避免死锁警告的正确模式是什么?
- javascript - JavaScript - scrollIntoView() 没有动画
- adsense - 如何获得 CPA 投标价格?
- php - 使用引导弹出模式更新 mysql 数据
- struts2 - jar 内的 checkbox.tfl 内的 Freemarker 异常
- c++ - C ++:从不同的实例化复制构造
- google-directory-api - 您可以限制 Google Directory API 中的服务帐户权限吗?
- python - 使用 Flask 中的新参数重定向到引用页面
- typescript - VS Code Typescript 在 Vuejs 项目中给出错误“属性不存在”