首页 > 解决方案 > Docker 无法连接到 Flask

问题描述

我正在尝试将一个简单的烧瓶应用程序移至 docker,但无法从浏览器访问我的烧瓶应用程序。

项目树

├───project
│   │   dockerfile
│   │   requirements.txt
│   │
│   └───app
│           server.py

dockerfile

FROM ubuntu:latest

RUN apt-get update -y
RUN apt-get install -y python-pip python-dev build-essential

ADD . /app
WORKDIR /app

RUN pip install -r requirements.txt

ENTRYPOINT ["python"]
CMD ["app/server.py", "--host=0.0.0.0"]

要求.txt

Flask==0.12.2

服务器.py

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Flask Dockerized'

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0')

码头工人命令:

docker build -t test-server:latest .
docker run -d -p 5000:5000 test-server

码头工人日志

 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 224-123-338

码头工人--版本:Docker version 19.03.5, build 633a0ea

码头工人ps

1c54ccfc61bf        test-server         "python app/server.p…"   6 seconds ago       Up 5 seconds        0.0.0.0:5000->5000/tcp   elated_solomon

标签: pythondockerflaskdockerfile

解决方案


通过设置将此设置为在调试模式下运行app.run(debug=True)表明您认为您正在设置的主机正在被覆盖:

❰mm92400❙~/test❱✔≻ docker run -it -p 5000:5000 testimage
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 963-222-479

所以将主机设置为app.run(host='0.0.0.0')

❰mm92400❙~/test❱✔≻ docker run -it -p 5000:5000 testimage
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 200-559-808

并且浏览器连接有效

172.17.0.1 - - [06/Mar/2020 15:59:42] "GET / HTTP/1.1" 200 -

推荐阅读