What IS Heroku
Short introduction to HEROKU
HEROKU is a popular Platform-as-a-Service provider (PaaS) which makes it easy for developers to deploy apps in different technologies and frameworks using a short learning curve. The platform support all major languages like Python, Ruby, Java, PHP, and popular frameworks: Flask, Django, Express.
To use effectively HEROKU we need to install the CLI, the command line interface that helps us to interact with the deployment platform.

How to start

  • 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 command:
    • Type in terminal heroku login. This will open a new browser window where the LOGIN action must be confirmed
​
HEROKU - Sign Up page
HEROKU - Sign Up page
​
HEROKU - Instal CLI
HEROKU - Instal CLI
After the installation is complete, open a terminal window and type heroku -v to check if HEROKU CLI is usable.
$ heroku -v
$ heroku/7.42.13 win32-x64 node-v12.16.2
$ # The sample output returned by HEROKU CLI on a Windows PC

​

HEROKU Sample Deployment

We can see HEROKU in action by using two samples FREE apps provided by AppSeed - Flask Black Dashboard. This popular Flask starter is provided with all assets required by HEROKU to be deployed in seconds. The relevant files:
Step #1 - Edit runtime.txt and specify the Python version to be used
python-3.6.10
Step #2 - Edit Procfile, the HEROKU app bootstrapper
web: gunicorn run:app --log-file=-
The above line instructs HEROKU to use the Gunicorn WSGI server to execute the WSGI app object, returned by run.py, located at the root of the project.
# Contents of run.py
from flask_migrate import Migrate
from os import environ
...
app = create_app( app_config )
Migrate(app, db)
# At this point, app is the WSGI object that Gunicorn expects.
The gunicorn module must be also present in the requirements.txt file, along with other modules required by the app.
flask
flask_login
...
python-decouple
gunicorn # <--- The magic line
With all configuration in place, we can start the deployment by typing a few lines in the terminal.
Step - #3 Clone the source code of target project
$ git clone https://github.com/app-generator/flask-black-dashboard.git
$ cd flask-black-dashboard
Step - #4 HEROKU Login - this will trigger a new browser window
$ heroku login
Step - #5 Create the app in HEROKU platform
$ # Create the app with a random name
$ heroku create
$
$ # Create app using a name
$ heroku create you-name-here
Step - #5 Compile the app in the HEROKU environment
$ git push heroku master
Step - #6 Open the app in the browser
$ heroku open
At this point, the sample app should be visible in the browser.
Flask Dashboard - Black Design, free starter coded in Flask by AppSeed.

​

HEROKU troubleshooting

  • First, make sure HEROKU CLI is accessible in the terminal. To check this type heroku -v in the terminal.
  • Make sure the commands are typed inside source code directory
  • heroku create used with an argument - Make sure that name is available in the HEROKU namespace.
​

HEROKU-ready apps

Starters provided by AppSeed are deployment-ready by default for many popular platforms - Docker, HEROKU and Gunicorn/Nginx.