Serving a simple machine learning model as a webservice using flask and docker.
- Use Model_training.ipynb to train a logistic regression model on the iris dataset and generate a pickled model file (iris_trained_model.pkl)
- Use app.py to wrap the inference logic in a flask server to serve the model as a REST webservice:
- Execute the command
python app.py
to run the flask app. - Go to the browser and hit the url
0.0.0.0:80
to get a messageHello World!
displayed. NOTE: A permission error may be received at this point. In this case, change the port number to 5000 inapp.run()
command inapp.py
. (Port 80 is a privileged port, so change it to some port that isn't, eg: 5000) - Next, run the below command in terminal to query the flask server to get a reply
2
for the model file provided in this repo:
curl -X POST \ 0.0.0.0:80/predict \ -H 'Content-Type: application/json' \ -d '[5.9,3.0,5.1,1.8]'
- Execute the command
- Run
docker build -t app-iris .
to build the docker image usingDockerfile
. (Pay attention to the period in the docker build command) - Run
docker run -p 80:80 app-iris
to run the docker container that got generated using theapp-iris
docker image. (This assumes that the port in app.py is set to 80) - Use the below command in terminal to query the flask server to get a reply
2
for the model file provided in this repo:curl -X POST \ 0.0.0.0:80/predict \ -H 'Content-Type: application/json' \ -d '[5.9,3.0,5.1,1.8]'
For details on floating the containerized app on AWS ec2 instance, see the blog.
See LICENSE for details.