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


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

最佳答案

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

我不知道为什么使用app.run()运行flask应用程序时,它为什么无法按预期工作。

直接使用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"]

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

稍后,我可能会花一些时间尝试理解为什么您的原始实现无法按预期工作。我对Flask不太了解,但是您的代码中看不到任何错误。

关于docker - Docker Flask,停留在 “Waiting response from localhost”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60782122/

10-16 23:18