无法访问Docker容器中的Flask应用

Dmi*_*iko 5 python flask docker

我无法向docker容器中的flask应用请求。它没有响应。

有我的烧瓶应用程序文件:

import json
from flask import Flask, jsonify
from flask import request

from trained_model import predict
app = Flask(__name__)

@app.route("/", methods=['POST'])
def main():
    res = []

    for obj in request.json:
        item = str(obj['item'])
        print item
        predicted = predict(item)
        print predicted
    res.append({'item': item, 'correct': predicted})

    return json.dumps({'results': res})

if __name__ == "__main__":
    app.run(host='0.0.0.0')
Run Code Online (Sandbox Code Playgroud)

有我的dockerfile:

FROM tensorflow/tensorflow

# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

# Bundle app source
COPY . /usr/src/app

RUN sh docker_install.sh

EXPOSE 5000
ENTRYPOINT ["python"]
CMD ["api.py"]
Run Code Online (Sandbox Code Playgroud)

有我的码头工人运行命令:

sudo docker run -p 5000:5000 -d my-image
Run Code Online (Sandbox Code Playgroud)

当我尝试发送帖子请求时,它不起作用。

小智 6

flask run --host=0.0.0.0如果您想从外部访问 Flask 服务器,则非常有用。当我在 docker 容器内运行 Flask 应用程序时,我遇到了类似的问题。虽然我修改了我的 Flask 应用程序并添加了app.run(host:'0.0.0.0')服务器正在运行,但我无法在浏览器中访问它。然后我通过提供相同的端口在外部运行 Flask 服务器o.o.o.o


小智 5

我已经成功了flask run --host=0.0.0.0。这似乎与有所不同app.run(host='0.0.0.0'),但我不知道为什么。参见/sf/answers/3011050521/


Mau*_*ave 5

我也遇到了同样的问题。我app.run(debug=True,host='0.0.0.0')这样做了app.run()并且成功了。app.run()不知道有什么问题