'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