Nouveau : Datasets open source gratuits disponibles !Decouvrir →
🐍
Intermediaire 20 min Flask

Deployer Flask sur Heroku

Pourquoi Deployer Flask sur Heroku ?

Deployer Flask sur Heroku est une pratique très populaire pour les développeurs web. Heroku offre un environnement cloud prêt à l'emploi, qui permet aux développeurs d'héberger et de déployer des applications web rapidement et facilement. Aujourd'hui, avec la croissance exponentielle du développement web et le besoin d'accessibilité globale pour les applications, deployer sur Heroku peut être une solution idéale.

Un cas d'utilisation concret serait d'avoir un blog personnel. Avec Flask et Heroku, vous pouvez créer rapidement et facilement un blog personnalisé qui est accessible à partir de n'importe quel endroit dans le monde. De plus, la mise à jour automatique des déploiements sur Heroku vous permet de vous concentrer davantage sur l'amélioration continue de votre application plutôt que sur le processus de déploiement complexe.

Prerequis

Pour suivre ce tutoriel, vous aurez besoin des éléments suivants :

  • Un compte Heroku : Vous pouvez créer un compte gratuit à Heroku.
  • Python 3.8 ou supérieur : Assurez-vous que Python est installé sur votre système et que la version est supérieure à 3.8.
  • Flask : Installer Flask avec pip :
    pip install Flask
    
  • Git : Utilisé pour le contrôle de version et les déploiements. Vous pouvez télécharger Git depuis ici.
  • Heroku CLI : Installez-le en suivant les instructions sur la page officielle Heroku.

Concepts fondamentaux

1. Application Flask

Un application Flask est une instance de l'objet Flask. C'est le point d'entrée principal de votre application.

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

2. Environnement virtuel

Pour éviter les conflits entre les dépendances des différents projets, il est recommandé d'utiliser un environnement virtuel.

python -m venv venv
source venv/bin/activate  # Sous Windows : venv\Scripts\activate

3. Requirements.txt

Le fichier requirements.txt liste toutes les dépendances de votre application.

Flask==2.1.0
gunicorn==20.1.0

4. Procfile

Le Procfile indique à Heroku comment démarrer votre application.

web: gunicorn app:app

Mise en pratique : projet fil rouge - Gestionnaire de tâches

Nous allons créer un simple gestionnaire de tâches avec Flask. Voici les étapes pour construire cette application :

1. Création du projet et des fichiers

Créez un nouveau répertoire et initialisez un environnement virtuel.

mkdir task_manager
cd task_manager
python -m venv venv
source venv/bin/activate  # Sous Windows : venv\Scripts\activate

Créer les fichiers suivants :

  • app.py
  • requirements.txt
  • Procfile
  • .gitignore

2. Configuration de l'application Flask

app.py

from flask import Flask, request, render_template_string

app = Flask(__name__)

tasks = []

@app.route('/')
def index():
    return render_template_string('''
        <h1>Gestionnaire de Tâches</h1>
        <ul>
            {% for task in tasks %}
                <li>task</li>
            {% endfor %}
        </ul>
        <form method="post" action="/add">
            <input type="text" name="task" placeholder="Ajouter une tâche">
            <button type="submit">Ajouter</button>
        </form>
    ''', tasks=tasks)

@app.route('/add', methods=['POST'])
def add_task():
    task = request.form['task']
    tasks.append(task)
    return redirect(url_for('index'))

if __name__ == '__main__':
    app.run(debug=True)

3. Ajout des dépendances

requirements.txt

Flask==2.1.0
gunicorn==20.1.0

4. Définition du Procfile

Procfile

web: gunicorn app:app

5. Configuration de .gitignore

.gitignore

venv/
__pycache__/
*.log
.env

6. Initialisation et commit du projet

Initialisez le dépôt Git, ajoutez les fichiers et faites un commit initial.

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

7. Déploiement sur Heroku

  1. Connectez-vous à votre compte Heroku via la CLI.

    heroku login
    
  2. Créez un nouveau projet Heroku.

    heroku create
    
  3. Mettez à jour les fichiers runtime.txt et Gunicorn pour spécifier la version de Python.

    • runtime.txt
      python-3.8.10
      
    • gunicorn dans Procfile
  4. Déployez le projet sur Heroku.

    git push heroku master
    

8. Accès à l'application

Une fois le déploiement terminé, accédez à votre application via le lien fourni par Heroku.

Erreurs frequentes et debugging

1. ModuleNotFoundError: No module named 'gunicorn'

Code incorrect :

gunicorn app:app

Code correct :

gunicorn app:app --bind 0.0.0.0:$PORT

Heroku nécessite que vous spécifiiez l'adresse IP et le port via les variables d'environnement.

2. AttributeError: 'NoneType' object has no attribute 'text'

Code incorrect :

@app.route('/')
def index():
    return render_template_string('Hello, World!')

Code correct :

from flask import Flask, render_template_string

app = Flask(__name__)

tasks = []

@app.route('/')
def index():
    return render_template_string('''
        <h1>Gestionnaire de Tâches</h1>
        <ul>
            {% for task in tasks %}
                <li>task</li>
            {% endfor %}
        </ul>
        <form method="post" action="/add">
            <input type="text" name="task" placeholder="Ajouter une tâche">
            <button type="submit">Ajouter</button>
        </form>
    ''', tasks=tasks)

@app.route('/add', methods=['POST'])
def add_task():
    task = request.form['task']
    tasks.append(task)
    return redirect(url_for('index'))

3. ModuleNotFoundError: No module named 'flask'

Code incorrect :

pip install Flask

Code correct :

pip install -r requirements.txt

Assurez-vous que toutes les dépendances sont listées dans requirements.txt.

Pour aller plus loin

1. Utilisation de la base de données

Vous pouvez utiliser des bases de données comme PostgreSQL pour stocker vos tâches persistamment.

2. Authentification et sécurité

Ajoutez une authentification simple pour sécuriser votre gestionnaire de tâches.

3. Déploiement continu

Utilisez des outils comme GitHub Actions ou GitLab CI pour automatiser le déploiement continu sur Heroku.

Défi pratique

Créez un petit projet Flask qui permet d'afficher une liste de livres avec leurs auteurs et une fonctionnalité pour ajouter de nouveaux livres. Utilisez des sessions pour gérer la connexion utilisateur.

Besoin d'aide sur Flask ?

Besoin d'aide sur un projet technique ? Decrivez-le pour des conseils personnalises.

Recevoir des conseils

Pages liees

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.