【问题标题】:getting a socket hang up error when trying to access my flask app in a docker container尝试访问 docker 容器中的烧瓶应用程序时出现套接字挂起错误
【发布时间】:2021-01-20 21:11:20
【问题描述】:

Dockerfile

from ubuntu:latest

RUN apt-get update -y && apt-get install -y python3-pip

COPY . /app

RUN pip3 install -r /app/requirements.txt

ENTRYPOINT ["python3"]
CMD ["app/app.py"]

运行命令

docker build -t flaskapp .
docker run -it -d p 5000:5000 flaskapp

如果我通过 Postman 向 localhost:5000 发送请求,我会收到 Error: Socket hang up 错误

有人知道为什么会出现这个问题吗?

【问题讨论】:

  • docker run 中删除-d 标志以查看终端中的容器日志,这可能会揭示问题(如果没有,请编辑您的问题以附加该日志)。
  • 使用 curl 时,我得到一个 Recv failure: connection reset by peer
  • @v25 没有错误。烧瓶应用程序在本地运行

标签: python docker flask


【解决方案1】:

我的烧瓶应用程序中暴露的主机是127.0.0.1,我不得不切换到0.0.0.0

【讨论】:

  • 这个答案实际上对我有用。我将我的应用程序的 IP 设置为 0.0.0.0,我终于可以访问我的容器的地址了。谢谢您的帮助。不过,我确实觉得这解决了我的问题很奇怪。
【解决方案2】:

我遇到了类似的问题,并通过这两种方法解决了它。 尝试在您的代码中进行以下任一更改:

1. 添加主机名 - 在您的烧瓶代码中添加任何 IP 主机(127.0.0.1 或任何您喜欢的),如下所示:

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

2. 在您的 Dockerfile 中添加 WORKDIR - 不是强制性的,但可以尝试一下。

【讨论】:

    【解决方案3】:

    关于您的 docker run 命令 似乎是一个错字

    来自

    docker run -it -d p 5000:5000 flaskapp
    

    docker run -it -d -p 5000:5000 flaskapp
    

    这里定义:(官方)https://docs.docker.com/engine/reference/commandline/run/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-21
      • 1970-01-01
      • 2017-10-18
      • 2019-08-14
      • 1970-01-01
      • 2021-06-10
      • 2017-11-24
      • 1970-01-01
      相关资源
      最近更新 更多