python:无法在 docker 容器中公开 Flask 应用程序

python: Cant expose flask app in docker container

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

项目结构:

Docker文件的内容:

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

并且容器发送到 运行 正常。

Dockerps:

FLask 消息:

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

我做错了什么?

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

要让它这样做,您需要改为绑定到 0.0.0.0。然后它将接受来自任何地方的连接。

您可以通过将主机参数添加到程序中的 app.run 语句来实现,就像这样

app.run(host='0.0.0.0')