Docker Flask,停留在“等待来自本地主机的响应”

问题描述 投票:0回答:1

我正在尝试在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 flask dockerfile
1个回答
0
投票

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

我不知道为什么用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不太了解,但是您的代码中看不到任何错误。

© www.soinside.com 2019 - 2024. All rights reserved.