Flask Deploy on HEROKU
This page explains how to deploy a Flask application on Heroku, the popular deployment platform.
Prerequisites
Basic programming knowledge in Python
Basic Flask knowledge and WSGI concept
Comfortable using a terminal
Already familiar with GIT - command-line versioning tool
What is Flask
Flask is a lightweight WSGI web application framework. It is designed to make getting started quick and easy, with the ability to scale up to complex applications. Classified as a microframework, Flask is written in Python and it does not require particular tools or libraries. It has no database abstraction layer, form validation, or any other components where pre-existing third-party libraries provide common functions.
What is HEROKU
Heroku's a fully managed platform that helps developers to deploy apps with ease. Heroku is a cloud-based, fully-managed platform as a service (Paas) for building, running, and managing apps - features:
Runtime - Heroku empowers developers to deliver products using a CLI, called Heroku Toolbelt
PostgreSQL DBMS - a powerful database already configured to be production-ready
Automatic scaling - Heroku scales in an instant, both vertically and horizontally.
Github integration - trigger production builds directly from Github commits
To explain the process, we will use a simple Flask Boilerplate already enhanced for a Heroku deployment.
Sample Project
Flask Boilerplate is a template codebase used by the AppSeed platform to generate Flask Apps enhanced with a basic set of features like authentication, database, ORM.
As mentioned, the project comes pre-configured for Heroku:
runtime.txt
- specify the Python version used by Heroku during the build and deployProcfile
- configuration file that informs Heroku where to look for the WSGI interfacerequirements.txt
- must contain thegunicorn
module
Gunicorn module
Gunicorn Green Unicorn
is a Python WSGI HTTP Server for UNIX. It’s a pre-fork worker model ported from Ruby’s Unicorn project. The Gunicorn server is broadly compatible with various web frameworks, simply implemented, light on server resources, and fairly speedy.
For basic usage please access the PyPi page or the official docs.
File runtime.txt
runtime.txt
To build the deploy any python-based app, Heroku uses a default Python version or the one specified in the runtime.txt file. Supported environment, as per Heroku official documentation - Specifying a Python version:
python-3.8.3
python-3.7.7
python-3.8.10 <-- The Default Version
python-2.7.18
Procfile
Heroku apps include a Procfile that specifies the commands that are executed by the app on startup. As specified in the official docs, the Procfile is always a simple text file that is named Procfile without a file extension.
For our sample, gunicorn
is called with run:app
argument.
How to deploy on HEROKU
Create a FREE account on Heroku platform
Install the Heroku CLI that match your OS: Mac, Unix or Windows
Open a terminal window and authenticate via
heroku login
commandClone the sources and push the project for LIVE deployment
The full command list, executed on our sample project.
Step #1 - Clone the project from Github
Step #2 - Check HEROKU is installed
Step #3 - Login to HEROKU plaform using the terminal
Step #4 - Push LIVE the product
At this point, you should be able to visit the app in the browser
Last updated
Was this helpful?