【问题标题】:Docker Flask, stuck at "Waiting response from localhost"Docker Flask,卡在“等待来自本地主机的响应”
【发布时间】:2020-03-20 21:58:17
【问题描述】:

我试图在 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"]

app.py:

from flask import Flask
from app import app 

app/init.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)

但我无法从主机连接,它没有响应

【问题讨论】:

  • 这听起来很熟悉。你碰巧运行 Docker for Mac 吗?
  • @jphuynh 不,linux mint

标签: docker flask dockerfile


【解决方案1】:

好吧,一年多前我在一次采访中遇到了同样的问题,直到今天我仍然感到困惑。

我不知道为什么在使用app.run() 运行烧瓶应用程序时它没有按预期工作。

直接使用flask命令行启动应用程序时,它工作正常。

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"]

您可以从__init__.py 文件中删除app.run(host='0.0.0.0')

稍后我可能会花一些时间尝试了解为什么您的原始实现无法按预期工作。我对烧瓶了解不多,但我看不出你的代码有什么问题。

【讨论】:

  • 成功了!谢谢,从昨天开始我一直在尝试不同的东西,但无法成功
【解决方案2】:

您应该在烧瓶应用程序中提及端口并设置 debug = True

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

你应该连接到同一个端口

docker run -p 3000:5000

现在您可以通过 http://localhost:3000/ 访问您的应用程序

【讨论】:

    【解决方案3】:

    这可能不会回答 OP 的问题,但可能会回答来这里的其他人的问题..

    对我来说,Flask 输出显示应用程序在启动 Docker 容器后正在运行。它显示了这一行,例如:

    Running on http://172.17.0.2:5000/ (Press CTRL+C to quit)
    

    所以,我点击了这个链接并希望它能够工作。

    但是,您需要连接到 Docker 容器 --- 而不是 Flask 应用程序。转到http://172.17.0.2:5000/ 直接连接到 Flask 应用程序,这是行不通的。你需要去http://0.0.0.0:5000/,它连接到Docker容器,它连接到Flask应用程序。

    所以去http://0.0.0.0:5000/ 工作。

    【讨论】:

      猜你喜欢
      • 2022-12-24
      • 1970-01-01
      • 1970-01-01
      • 2011-08-07
      • 2016-11-16
      • 1970-01-01
      • 2015-02-23
      • 2015-07-09
      • 1970-01-01
      相关资源
      最近更新 更多