Issue
I'm working on a simple Flask app for which I'm using the default template:
from flask import render_template
import connexion
# Create the application instance
app = connexion.App(__name__, specification_dir="./")
# read the swagger.yml file to configure the endpoints
app.add_api("swagger.yml")
# Create a URL route in our application for "/"
@app.route("/")
def home():
"""
This function just responds to the browser URL
localhost:5000/
:return: the rendered template "home.html"
"""
return render_template("home.html")
if __name__ == "__main__":
app.run(debug=True)
I'm just calling a dummy function that return and 'ok' response:
def test(features):
return 'ok'
When I call it directly on my machine with the following code:
headers = {'content-type': 'application/json'}
#url = "http://localhost:5000/api/document"
url = "http://localhost:5000/api/scraping"
data = {'features':features}
response = requests.post(url,data=json.dumps(data), headers=headers )
It works without any issue, but if I run it from the docker image I get the following error:
ConnectionError: HTTPConnectionPool(host='localhost', port=5000): Max retries exceeded with url: /api/scraping (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f088060ef60>: Failed to establish a new connection: [Errno 111] Connection refused'))
This is the docker file I'm using:
FROM ubuntu:18.04
RUN apt-get update -y && \
apt-get install -y python-pip python-dev
# We copy just the requirements.txt first to leverage Docker cache
COPY ./requirements.txt /app/requirements.txt
WORKDIR /app
RUN pip install -r requirements.txt
COPY . /app
ENTRYPOINT [ "python" ]
CMD [ "app.py" ]
And I'm using the same 5000 port:
sudo docker run -d -p 5000:5000 flask-tutorial
Solution
you need to expose
port 5000
in your Dockerfile
:
FROM ubuntu:18.04
RUN apt-get update -y && \
apt-get install -y python-pip python-dev
# We copy just the requirements.txt first to leverage Docker cache
COPY ./requirements.txt /app/requirements.txt
WORKDIR /app
RUN pip install -r requirements.txt
COPY . /app
EXPOSE 5000
ENTRYPOINT [ "python" ]
CMD [ "app.py" ]
Answered By - LinPy
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.