【问题标题】:python: Cant expose flask app in docker container [duplicate]python:无法在docker容器中公开烧瓶应用程序[重复]
【发布时间】:2022-01-16 18:34:41
【问题描述】:

我有一个可以在本地运行的 Flask 应用程序,但我无法让它在 docker 容器中运行。

项目结构:

Dockerfile 的内容:

FROM python:3.9

ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

WORKDIR /code

COPY Pipfile Pipfile.lock /code/
RUN pip install --upgrade pip
RUN pip install pipenv && pipenv install --skip-lock --system

COPY . /code/

CMD ["python3", "./run.py"]

这是我用来构建和运行映像的命令

docker build --tag time-managment .
docker run -p 5000:5000 time-managment

容器运行良好。

码头工人ps:

FLask 消息:

但我无法使用浏览器访问它,我只是收到“此页面无法正常工作”的消息,日志或任何内容都没有更新。

我做错了什么?

【问题讨论】:

  • http://localhost:5000?它返回什么状态码?您的 Flask 应用程序是否有绑定到 / 路径的处理程序?
  • 我刚刚得到一个 ERR_EMPTY_RESPONSE,是的,该应用程序在 / 路径上有一个处理程序
  • 你不能“只是得到”。 HTTP 协议总是返回错误。不知何故,我认为你得到 204 No Content。在浏览器中打开您的网络选项卡并仔细了解请求响应详细信息。

标签: python docker flask


【解决方案1】:

在日志中,您可以看到Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)。 127.0.0.1 意味着您的应用程序“绑定”到 127.0.0.1 (localhost),这意味着它只会接受来自该机器的连接。在 Docker 容器中,localhost 就是容器本身。所以它不会接受来自容器外部的连接。

为此,您需要将其绑定到 0.0.0.0。然后它将接受来自任何地方的连接。

您可以通过将 host 参数添加到程序中的 app.run 语句中来做到这一点,就像这样

app.run(host='0.0.0.0')

【讨论】:

    猜你喜欢
    • 2018-03-21
    • 2017-10-18
    • 2021-09-04
    • 1970-01-01
    • 1970-01-01
    • 2021-08-20
    • 1970-01-01
    • 2019-07-13
    • 1970-01-01
    相关资源
    最近更新 更多