Reputation: 1824
I can not request to my flask app inside docker container. It doesn't responding.
there is my flask app file:
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')
there is my 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"]
there is my docker run command:
sudo docker run -p 5000:5000 -d my-image
when I try to send post request it doesn't work.
Upvotes: 21
Views: 20610
Reputation: 519
I was having the same problem.
I did app.run(debug=True,host='0.0.0.0')
from app.run()
and it worked.
Not sure what was the issue with the app.run()
though
Upvotes: 6
Reputation: 61
flask run --host=0.0.0.0
is useful in case you want to access flask server externally. I had similar kind of issue when I was running flask app inside docker container. Though I modified my flask app and added app.run(host:'0.0.0.0')
, server was running but I can not access it in browser.then I ran flask server externally by providing same port o.o.o.o
.
Upvotes: 6
Reputation: 261
I've had success with flask run --host=0.0.0.0
. Somehow that seems to be different than app.run(host='0.0.0.0')
, but I don't know why. See https://stackoverflow.com/a/43015007/9484954
Upvotes: 24