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')
我有一个可以在本地运行的 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')