我已经构建了一个包含简单Flask测试应用程序的Docker镜像:
from flask import Flask app = Flask(__name__) @app.route("/") def hello_world(): return "Hello World!" if __name__ == "__main__": app.run(debug=True,host='0.0.0.0')
使用Dockerfile
:
FROM ubuntu:latest RUN apt-get update -y RUN apt-get install -y python-pip python-dev build-essential COPY . /app WORKDIR /app RUN pip install -r /app/requirements.txt ENTRYPOINT ["python"] CMD ["app.py"]
Docker镜像是使用构建的docker build -t flask-app .
,并且已成功创建:
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE flask-app latest fab0d79fd7ac 8 minutes ago 642.2 MB ubuntu latest 104bec311bcd 5 weeks ago 129 MB
我用它来运行它:
$ docker run -d -p 5000:5000 flask-app e92b249dd02ca44489069b783fa9be713c7a14ea893061194e37c80f16d8c931
我假设我可以通过指向浏览器来测试应用程序http://localhost:5000/
但我得到了超时.怎么可能出错?
从这里看起来一切都很好。让我们进行一些调试。
让我们从名称开始:
docker run -d -p 5000:5000 --name flask-app-test flask-app
您也可以避开该-d
标志并将日志直接显示在屏幕上。
首先检查Flask应用程序是否确实正在运行,或者是否已崩溃。从一个简单的开始docker ps
(看看您是否注意到那里有奇怪的东西),然后是docker logs flask-app-test
(这些将是Flask应用程序的日志,它崩溃了吗?有什么奇怪的东西吗?)
如果到现在为止一切都很好,那么该是进入容器的时候了。让我们尝试一下docker exec -ti flask-app-test bash
。进入后,wget
通过安装并通过加载希望下载的文件(后跟,或称为它的东西)来apt-get install wget
测试Web服务器是否从内部工作。wget http://localhost:5000
cat
ls
cat file.html