【问题标题】:Docker Container server not sending data [duplicate]Docker Container服务器不发送数据[重复]
【发布时间】:2021-05-10 06:25:46
【问题描述】:

我刚刚开始学习 docker,我正在尝试在容器中运行一个非常简单的烧瓶服务器。每当我运行它时,它都可以正常工作。但是,当我访问该网站时,chrome 会显示:

This page isn’t working
127.0.0.1 didn’t send any data.
ERR_EMPTY_RESPONSE

这是我的代码:

from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
    return "Hello World"

if __name__ == "__main__":
    app.run(debug=True)

Dockerfile:

FROM python:3

RUN mkdir /test
WORKDIR /test
RUN pip3 install flask

COPY . .
EXPOSE 5000

cmd ["python3", "application.py"]

以及我用来构建映像和运行容器的命令:

docker build . -t test
docker start -p 5000:5000 test

有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: python docker flask


    【解决方案1】:

    尝试暴露80端口

    EXPOSE 80
    

    并以root身份启动容器:

    sudo docker start -p 80:80 test
    

    【讨论】:

    • 我在窗户上(很遗憾)
    • Flask 使用端口 5000 作为它的开发服务器。我在我的电脑上运行了服务器(不是通过容器),它工作了
    • 我明白了。那么它很难说什么是错的。也许是 python3 命令的完整路径?登录容器,看看是否一切正常: docker exec -it /bin/bash
    • 什么意思?如果有帮助,我尝试使用 Go (golang:latest) 运行网络服务器,但效果不佳(同样的问题)。当我尝试在我的静态(局域网)IP 地址(不是 127.0.0.1 或 localhost)上运行 golang 服务器时,容器在启动后立即退出。
    • 我的意思是运行 cmd ["/usr/bin/python3", "application.py"]
    【解决方案2】:

    容器内的localhost与容器外的localhost不同。

    改变

    app.run(debug=True)
    

    app.run(debug=True, host='0.0.0.0')
    

    【讨论】:

      猜你喜欢
      • 2013-05-14
      • 1970-01-01
      • 2012-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-31
      • 2019-09-10
      相关资源
      最近更新 更多