【问题标题】:Docker Unable to connect to FlaskDocker 无法连接到 Flask
【发布时间】:2020-03-06 15:44:35
【问题描述】:

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

项目树

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

码头文件

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"]

requirements.txt

Flask==0.12.2

server.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 : 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

【问题讨论】:

  • 这是在哪个端口上运行的?你是在暴露那个端口吗?
  • 你能发布你的 docker build 和 docker run 命令吗?
  • 端口 5000 和 docker build -t test-server:latest .docker run -d -p 5000:5000 test-server
  • 你是否有机会在 Docker Toolbox 上运行它?另外,您是否在容器上运行了 docker logs 以查看是否发生任何错误?
  • 在我的系统中 * 调试器处于活动状态! * 调试器 PIN:224-123-338 这不会出现,因此日志也不会更新。有什么解决办法吗?

标签: python docker flask dockerfile


【解决方案1】:

通过设置 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 -

【讨论】:

  • 也许这不是我的代码问题,而是我的 docker install 我正在使用Docker version 19.03.5, build 633a0ea 在 windows 10 pro 上运行 docker desktop 我已经用你的建议更新了我的第一篇文章我一直是这个问题跨度>
  • 嗯,我正在运行 docker for Mac,版本 19.03.5,不确定两个引擎之间差异的详细信息。可能有用的是使用官方的python图像,这样可以最大限度地减少差异
【解决方案2】:

我在 Windows 10 Home 上运行 Docker Toolbox,我也遇到了类似的问题,我无法使用浏览器连接我的 docker 部署的烧瓶应用程序。以下是 yopu 可以尝试并且应该适合您的方法:

请在 Dockerfile 中添加-

EXPOSE 5000

在 app.py(你的 python 文件)中

app.run(host='0.0.0.0', port=5000)

构建

docker build -t test-server:latest .

运行

docker run -p 5000:5000 test-server

现在,运行下面的命令

docker-machine env

运行上述命令后检查 DOCKER_HOST 获得的 IP(默认为 192.168.99.100:2376)

在浏览器中输入你为 DOCKER_HOST 获得的任何 IP 以及端口 5000 例如:http://192.168.99.100:5000

【讨论】:

    【解决方案3】:

    我也遇到了同样的问题,这就是我如何能够访问 api。

    我在 windows 10 上运行。我能够使用带有端口的 windows 机器的 IPV4 地址访问。

    以下是我遵循的步骤:

    1. 打开 CMD
    2. Ipconfig
    3. 在我的例子中,选择 IPv4 地址并添加在 docker run 命令 ( 8080 ) 中定义的端口。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-07
      • 1970-01-01
      • 2015-05-19
      • 2018-10-02
      • 2019-09-17
      • 1970-01-01
      • 2018-07-12
      • 2017-06-11
      相关资源
      最近更新 更多