from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
< br Dockerfile:
FROM python:alpine
RUN pip install flask
COPY . /src/
EXPOSE 5000
ENTRYPOINT ["python", "/src/app.py"]
docker-compose.yml:
…
test:
build: .
ports:
- 127.0.0.1:5000:5000
Flask应用似乎是按预期运行:
$ docker logs test
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
尝试从外部连接失败:
$ http http://127.0.0.1:5000/
http: error: ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer')) while doing GET request to URL: http://127.0.0.1:5000/
任何想法,为什么我看不到“ Hello World!”在这里?
#1 楼
尝试从外部连接失败
您实际上是从外部连接吗? Flask绑定到本地主机(127.0.0.1),并且只能从容器内部访问。如果您在本地计算机上,则需要flask绑定到所有IP:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run(host='0.0.0.0')
对我来说成功地工作。
评论
那就对了。没想到这实际上是python或flask的问题,因为我只是从文档中复制了它。谢谢
–镁
18年2月20日在18:00
或与gunicorn:gunicorn --bind 0.0.0.0:5000 app:app
–马丁·托马
19年4月15日在7:18
如果使用烧瓶运行,请使用--host = 0.0.0.0。或在Dockerfile中:CMD [“ flask”,“ run”,“-host = 0.0.0.0”]
–sebas
19年9月7日在10:46
我一直在寻找4天> D哈哈
– eleijonmarck
19年11月19日在12:50
+1您保存了我的一天:)很高兴在20分钟而不是4天后找到此答案
– Lanenok
20年9月2日在18:55