Docker 无法在浏览器(MacOS)中打开停靠的烧瓶应用程序
我是docker和flask的新手。作为一个测试用例,我正在尝试将一个flask应用程序dockerize,该应用程序在MacOS上的浏览器中返回“hello world”。我有以下文件-app.py、requirements.txt、Dockerfile。下面给出了脚本和文件的内容 app.py:Docker 无法在浏览器(MacOS)中打开停靠的烧瓶应用程序,docker,flask,docker-machine,Docker,Flask,Docker Machine,我是docker和flask的新手。作为一个测试用例,我正在尝试将一个flask应用程序dockerize,该应用程序在MacOS上的浏览器中返回“hello world”。我有以下文件-app.py、requirements.txt、Dockerfile。下面给出了脚本和文件的内容 app.py: from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return "hel
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return "hello world!"
if __name__ == '__main__':
app.run(debug=True)
requirements.txt
Flask==1.0.3
Dockerfile
FROM python:3.7.2-slim
WORKDIR /app
COPY . /app
RUN pip install --no-cache-dir -r requirementx.txt
CMD ["python", "app.py"]
我遵循了烧瓶应用程序对接的标准程序:
docker build -t flask app:latest .
docker run -d -p 5000:5000 flask app
根据之前关于StackOverflow的报道,我查看了以下链接中提供的解决方案:
这将生成以下错误消息:
curl: (52) Empty reply from server
curl: (6) Could not resolve host: app
我甚至按照建议将app.run()
更改为app.run(host='0.0.0')
,因为我希望容器可以从外部访问,如此链接中所述:
我运行命令:curl-Ihttp://0.0.0.0:5000
也生成了相同的错误消息-
curl: (52) Empty reply from server
我甚至试过:curl-H主机:0.0.0.0:5000-Ihttp://app:5000
这给了我以下错误信息:
curl: (52) Empty reply from server
curl: (6) Could not resolve host: app
Docker使用以下命令集进行了安装和测试,一切运行顺利:
$ brew install docker docker-machine
$ brew cask install virtualbox
$ docker-machine create --driver virtualbox default
$ docker-machine env default
$ eval "$(docker-machine env default)"
$ docker run hello-world
这是一个非常简单的代码。但我不知道为什么我会在这里遇到这些问题。非常感谢任何帮助。在主机系统上运行
docker ps-a
的输出是什么?我希望(a)包括app.run(host='0.0.0')
参数和(b)指向docker机器ip
地址的组合能够工作。您是否尝试过此特定配对?您也可以使用Docker桌面应用程序(brew cask安装Docker
)。您仍然需要更改app.run()
调用,但是您应该能够访问http://localhost:5000
从主机浏览器。2件其他事情:1)生成命令无效,语法无效(使用docker build-t app.
)。2) 您的requirements.txt文件在Dockerfile中被称为requirementx.txt
,因此这也不会起作用。啊,谢谢Z4层!错误在于Dockerfile中requirements.txt的拼写错误。docker build中的flask应用程序在我发布问题时是一个印刷错误。由于某种原因,即使没有名为requirementx.txt的文件,也会生成图像。