Deploy a Machine Learning Web App with Heroku

In this article, you will learn to deploy a fully functional ML web application in under 3 minutes.

In a previous blog post, I demonstrated how you can build a machine learning web app in Python using the Streamlit library. The end product looked like this:


Deploy a Machine Learning Web App with Heroku


This is an app that allows users to enter information about their health and lifestyle, and returns an output prediction of how likely the person is to develop heart disease in 10 years.

If you’d like to learn more about the model and how the app was built, feel free to go through the tutorial.

Otherwise, you can simply navigate to this Github repository and clone it. It contains all the code files necessary to build and deploy the web application.


Step 0: Pre-requisites

To run the Streamlit web app and deploy it to Heroku, you need to have a non-GUI based Python code editor installed (a Jupyter Notebook won’t suffice). I’m currently using Visual Studio Code, but PyCharm and Atom are also good alternatives for you to try out.

Once that’s done, make sure to install these three libraries using the ‘pip’ command — StreamlitJoblib, and Pandas.


Step 1: Run the app locally

Now that your environment is ready, try running the app locally to check if everything works.

Go to your terminal and type the following lines of code:

streamlit run


Then, open a browser and navigate to http://localhost:8501. You should see a web application that looks like this:


Deploy a Machine Learning Web App with Heroku


Step 2: Create the necessary files

Our folder currently has three files:


Deploy a Machine Learning Web App with Heroku


In order to successfully deploy the app to Heroku, we need to create three more files:

1. requirements.txt

First, create a text file and name it requirements.txt. Then, paste the following into it:



2. Procfile

Next, you need to create a Procfile. This tells Heroku where your app is located and how to start it.

To create a Procfile, just open your terminal and navigate to the folder you just cloned. Type the following command:

echo web: gunicorn app:app >Procfile



Finally, create a file named with the following contents:

mkdir -p ~/.streamlit/ 
    echo "\ [server]\n\
    headless = true\n\
    port = $PORT\n\
    enableCORS = false\n\
    \n\" > ~/.streamlit/config.toml


Step 3: Set up Heroku

Now, you need to create a free Heroku account.

Once that’s done, download the Heroku CLI and run the executable file.

To make sure you have successfully installed Heroku on your device, type the following command into your terminal:

heroku --version


If you get a “command not found” error, it means that something’s wrong and Heroku isn’t set up properly on your device. Otherwise, your installation was successful and you can move to the next step.


Step 4: Deploy the web app

Open your terminal again and navigate to the directory where your app resides.

Type the following command:

heroku create my_app


Note: You can replace “my_app” with any name of your choice.

Then, you need to initialize and push your code to Git. To do so, type the commands below into the terminal:

git init
    git add .
    git commit -m "first commit"


Finally, run these two commands to deploy your code to Heroku:

heroku git:remote -a my_app
    git push heroku master


Note: Again, remember to change my_app to your app name.

Once you’re done, you will see output like this show up on your terminal:


Deploy a Machine Learning Web App with Heroku


The link displayed above is where your app resides, and you can now access it online. Here’s the URL to my web app:

That’s it! If you followed all the steps correctly, you now have deployed a functional web application that you can share with others using a single link.

Natassha Selvaraj is a self-taught data scientist with a passion for writing. You can connect with her on LinkedIn.