Pourquoi Deployer Flask sur Railway ?
Deployer un application Flask sur Railway offre plusieurs avantages concrets. En tant que développeur, vous pouvez profiter de la facilité d'utilisation et de l'infrastructure scalable de Railway pour déployer votre application sans se soucier du déploiement. Cette plateforme simplifie le processus en gérant automatiquement les aspects techniques tels que l'échelle, la sécurité et les mises à jour des packages. Par ailleurs, un cas d'usage concret serait le développement de petites applications personnelles ou startups qui nécessitent une infrastructure robuste sans investir trop de temps et d'efforts.
Prerequis
- Connaissance intermédiaire en Python
- Familiarité avec Flask (version 1.1.2 ou supérieure recommandée)
- Compréhension de l'environnement de développement local (shell, terminal)
- Accès à un compte Railway (gratuit pour les petits projets)
Concepts fondamentaux
1. Environnement de Développement
Pour commencer, vous devez configurer votre environnement de développement. Cela implique d'installer Python et Flask sur votre machine locale.
## Installez Python (version recommandée : >=3.7)
curl https://pyenv.run | bash
## Ajoutez pyenv à votre PATH
echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.bashrc
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init --path)"\n eval "$(pyenv virtualenv-init -)"\nfi' >> ~/.bashrc
## Installez Flask dans un environnement virtuel
pyenv install 3.8.5
pyenv local 3.8.5
pip install flask==1.1.2
2. Structure du Projet
Une structure de projet claire est essentielle pour un déploiement réussi.
my_flask_app/
├── app.py
├── requirements.txt
├── static/
│ └── style.css
└── templates/
└── index.html
3. Gestion des Dépendances
Listez toutes les dépendances nécessaires dans requirements.txt.
Flask==1.1.2
gunicorn>=20.0.4
Mise en pratique : Projet Fil Rouge
Nous allons construire un simple gestionnaire de tâches basé sur Flask.
Étape 1: Créer le fichier app.py
## Importations nécessaires
from flask import Flask, render_template, request, redirect, url_for
## Création de l'application Flask
app = Flask(__name__)
## Route pour afficher la liste des tâches
@app.route('/')
def index():
tasks = ['Acheter du pain', 'Faire les courses']
return render_template('index.html', tasks=tasks)
## Route pour ajouter une nouvelle tâche
@app.route('/add_task', methods=['POST'])
def add_task():
task = request.form['task']
# Ajoutez la tâche à la liste (pour simplicité, on utilise une liste globale)
tasks.append(task)
return redirect(url_for('index'))
## Route pour supprimer une tâche
@app.route('/delete_task/<int:index>')
def delete_task(index):
del tasks[index]
return redirect(url_for('index'))
Étape 2: Créer le fichier requirements.txt
Flask==1.1.2
gunicorn>=20.0.4
Étape 3: Créer les fichiers HTML
Créez un dossier templates et ajoutez index.html.
<!-- templates/index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Todo List</title>
</head>
<body>
<h1>Todo List</h1>
<form method="POST" action="/add_task">
<input type="text" name="task" placeholder="Add a new task">
<button type="submit">Add</button>
</form>
<ul>
{% for task in tasks %}
<li>task <a href="/delete_task/loop.index0">Delete</a></li>
{% endfor %}
</ul>
</body>
</html>
Étape 4: Exécuter l'application localement
## Lancer l'application Flask
flask run
Erreurs Frequentes et Debugging
Erreur :
ImportError: No module named 'gunicorn'Le module
gunicornn'est pas installé.# Code incorrect import gunicorn # Correction pip install gunicorn>=20.0.4Erreur :
AttributeError: module 'flask' has no attribute 'route'La version de Flask est incompatible avec la syntaxe utilisée.
# Code incorrect from flask import Flask, route # Correction from flask import Flask, routesErreur :
TemplateNotFound: template not foundLe chemin vers le fichier HTML est incorrect.
# Code incorrect return render_template('index.html') # Correction return render_template('templates/index.html')
Pour aller plus loin
Ajouter des Utilisateurs Authentifiés Implémenter une authentification utilisateur pour sécuriser le gestionnaire de tâches.
Utiliser la Base de Données Stocker les tâches dans une base de données pour persister les modifications.
Déployer sur Railway Suivez les instructions pour déployer votre application Flask sur Railway en suivant le processus de déploiement.
Défi Pratique
Créez un simple API RESTful avec Flask qui permet de gérer des blog posts (création, lecture, mise à jour et suppression). Implémentez également une interface utilisateur frontend pour afficher les blog posts.