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

2024-09-28 20:54:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个FlaskAPI,并将其作为docker映像托管。图像的dockerfile如下所示:

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)

然而,当我转到链接http://172.17.0.2:5000/时,我没有得到任何响应。但是当我跑的时候 http://localhost:5000/,我得到了一个有效的答复。

为什么会发生这种情况?
多谢各位


Tags: dockerrunpyapiapphttpflaskserver