我无法在docker容器内请求我的烧瓶应用程序。它没有回应。
我的烧瓶应用文件:
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')
有我的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"]
我的docker run命令:
sudo docker run -p 5000:5000 -d my-image
当我尝试发送帖子请求时,它不起作用。
答案 0 :(得分:1)
我在flask run --host=0.0.0.0
取得了成功。不知怎的,这似乎与app.run(host='0.0.0.0')
不同,但我不知道为什么。见https://stackoverflow.com/a/43015007/9484954
答案 1 :(得分:0)
flask run --host=0.0.0.0
在您要从外部访问Flask服务器时很有用。当我在Docker容器中运行flask应用程序时,我遇到了类似的问题。尽管我修改了flask应用程序并添加了app.run(host:'0.0.0.0')
,但是服务器正在运行,但是无法在浏览器中访问它。然后,我通过提供相同的端口o.o.o.o
在外部运行了flask服务器。
答案 2 :(得分:0)
我遇到了同样的问题。
我从 app.run(debug=True,host='0.0.0.0')
做了 app.run()
并且它奏效了。
不确定 app.run()
有什么问题