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