在Docker容器中运行Flask应用程序

srm*_*srm 7 python flask docker

我已经构建了一个包含简单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')
Run Code Online (Sandbox Code Playgroud)

使用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"]
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

我用它来运行它:

$ docker run -d -p 5000:5000 flask-app
e92b249dd02ca44489069b783fa9be713c7a14ea893061194e37c80f16d8c931
Run Code Online (Sandbox Code Playgroud)

我假设我可以通过指向浏览器来测试应用程序http://localhost:5000/但我得到了超时.怎么可能出错?

Cri*_*ldi 6

从这里看起来一切都很好。让我们进行一些调试。

让我们从名称开始: 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:5000catlscat file.html