'Can't access flask app which is inside docker container
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.
Solution 1:[1]
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
Solution 2:[2]
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.
Solution 3:[3]
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
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Donald Patterson |
| Solution 2 | Gsk |
| Solution 3 | Maunish Dave |
