在 docker 上运行 Flask 应用程序时遇到问题

问题描述 投票:0回答:1

这是我创建的docker镜像

FROM ubuntu:20.04

WORKDIR /app

COPY . /app 

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update && \
    apt-get install -y wget && \
    apt-get install -y libgtk2.0-dev

RUN mkdir -p ~/miniconda3

RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh && \
    bash miniconda.sh -b -p /opt/miniconda && \
    rm miniconda.sh

ENV PATH /opt/miniconda/bin:$PATH

COPY environment.yaml /app/environment.yaml

RUN conda env create -f /app/environment.yaml

CMD ["/bin/bash", "-c", "source /opt/miniconda/etc/profile.d/conda.sh && conda activate my-env && python APIWrapper.py"]

当我运行docker镜像时,容器运行成功,但是当我测试应用程序的端点时,它无法正常工作, enter image description here

启动应用程序:

$ docker run -p 5000:5000 sample-img:1.0
* Serving Flask app 'APIWrapper' (lazy loading)
...
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

测试应用程序:

$ curl http://127.0.0.1:5000/extract?contractPath=/app/input/AWS.pdf
curl: (56) Recv failure: Connection reset by peer

已尝试使用端口映射并安装包含我的文件的卷,但两者都不起作用

docker flask dockerfile containers
1个回答
0
投票

要从容器外部访问端点,您必须在特殊主机 IP 0.0.0.0 而不是 127.0.0.1 上启动应用程序,127.0.0.1 是正在运行的容器的 IP,而不是主机的 IP。

cf Docker 应用程序服务器 ip 地址 127.0.0.1 与 0.0.0.0 ip 的差异

© www.soinside.com 2019 - 2024. All rights reserved.