作为 docker 容器托管的 Flask api 适用于 localhost:5000 但不适用于 172.17.0.2:5000

Flask api hosted as a docker container works with localhost:5000 but not with 172.17.0.2:5000

我创建了一个烧瓶 api 并将其托管为 docker 图像。图像的 docker 文件如下所示:

FROM pymesh/pymesh:latest

WORKDIR /apiapp

RUN pip install flask

EXPOSE 5000

COPY . /apiapp
ENV FLASK_APP=feature_extract_api.py
# ENTRYPOINT ['/bin/bash']

CMD ["flask", "run", "--host", "0.0.0.0"]

原始 python 文件中的 app.run() 如下所示:

if __name__=='__main__':
    app.run()

终端在 运行 连接 docker 容器时显示:

(dockerenv) D:\Siemens\Docker Pymesh API>docker run -p 5000:5000 pymeshapi:trial  
 * Serving Flask app 'feature_extract_api.py' (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on all addresses.
   WARNING: This is a development server. Do not use it in a production deployment.
 * Running on http://172.17.0.2:5000/ (Press CTRL+C to quit)

但是,当我转到 link http://172.17.0.2:5000/ 时,我没有得到任何响应。但是当我 运行 http://localhost:5000/,我得到了一个有效的响应。

为什么会这样?
谢谢

使用网桥网络 IP 地址的 'trick' 在 Windows 上不起作用,因为它的运行方式 Docker。

推荐的方式是映射端口,使用localhost.