Nouveau : Datasets open source gratuits disponibles !Decouvrir →
🟢
Intermediaire 20 min Express

Deployer Express sur Fly.io

Pourquoi Deployer Express sur Fly.io ?

Deployer Express sur Fly.io est une excellente solution pour les développeurs qui cherchent à rendre leur application plus performante, scalable et fiable. En effet, Fly.io propose un réseau de serveurs répartis autour du monde entier, permettant aux applications d'être accédées rapidement peu importe la localisation du client. Cela est particulièrement utile pour les applications ayant une forte demande d'users en simultané ou nécessitant une disponibilité élevée.

Un cas concret de l'utilisation de Fly.io serait un service de gestionnaire de tâches, comme Trello ou Asana. En déployant ce type d'application sur Fly.io, les utilisateurs pourraient accéder à leur application depuis n’importe quel endroit du monde avec une latence minimale.

Prerequis

  • Connaissance approfondie de JavaScript et Node.js
  • Familiarité avec Express.js
  • Un compte Fly.io
  • Node.js v14 ou supérieur installé sur votre machine
  • npm (Node Package Manager) v6 ou supérieur installé sur votre machine

Concepts fondamentaux

1. Comprendre les concepts de base

Fly.io utilise un modèle d'infrastructure as code pour déployer et gérer des applications. Voici quelques concepts clés :

  • Apps: Une application Fly.io est une collection de services qui travaillent ensemble.
  • Services: Un service est une unité de déploiement indépendante, souvent correspondant à un processus ou une fonctionnalité spécifique de votre application.
  • Regions: Les régions sont les emplacements géographiques où vos services seront déployés. Chaque région a ses propres serveurs physiques pour offrir la meilleure latence et la meilleure disponibilité.

2. Créer un projet Fly.io

Pour commencer, vous devez créer un nouveau projet sur Fly.io. Voici comment :

flyctl init

Cette commande va vous guider à travers le processus de création d'un nouveau projet. Vous serez invité à choisir un nom pour votre application et à sélectionner une région.

3. Configurer le fichier fly.toml

Fly.io utilise un fichier fly.toml pour configurer les paramètres de déploiement de l'application. Voici un exemple basique :

app = "mon-app"
kill_signal = "SIGINT"
kill_timeout = 5000

[env]
  NODE_ENV = "production"

[experimental]
  auto_rollback = true

[[services]]
  internal_port = 3000
  processes = ["web"]

  [[services.concurrency]]
    type = "memory"
    memory = 128

  [[services.http.routes]]
    handlers = ["static", "service"]

4. Créer une application Express

Créez un nouveau fichier app.js et ajoutez le code suivant :

// app.js
const express = require('express');
const app = express();
const port = process.env.PORT || 3000;

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(port, () => {
  console.log(`App listening at http://localhost:${port}`);
});

5. Installer les dépendances

Assurez-vous d'avoir installé Express.js et de l'ajouter à vos dépendances :

npm init -y
npm install express

6. Exécuter votre application locallement

Vous pouvez maintenant exécuter votre application localement en utilisant la commande suivante :

node app.js

Ouvrez un navigateur et allez à http://localhost:3000. Vous devriez voir "Hello World!" affiché.

Mise en pratique : projet fil rouge

Dans cet exemple, nous allons créer une petite application de gestionnaire de tâches simple. Cette application permettra aux utilisateurs de créer, lire et supprimer des tâches.

1. Créer le fichier app.js

Créez un nouveau fichier app.js et ajoutez le code suivant :

// app.js
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const port = process.env.PORT || 3000;
const tasks = [];

app.use(bodyParser.json());

// Route pour créer une tâche
app.post('/tasks', (req, res) => {
  const task = req.body;
  tasks.push(task);
  res.status(201).send(task);
});

// Route pour lire toutes les tâches
app.get('/tasks', (req, res) => {
  res.send(tasks);
});

// Route pour supprimer une tâche
app.delete('/tasks/:id', (req, res) => {
  const id = parseInt(req.params.id);
  tasks.splice(id, 1);
  res.status(204).send();
});

app.listen(port, () => {
  console.log(`App listening at http://localhost:${port}`);
});

2. Installer les dépendances

Assurez-vous d'avoir installé Express.js et BodyParser :

npm install express body-parser

3. Exécuter votre application locallement

Exécutez votre application localement en utilisant la commande suivante :

node app.js

Ouvrez un navigateur et allez à http://localhost:3000/tasks. Vous devriez voir une liste vide de tâches. Vous pouvez tester les routes /tasks et /tasks/:id en utilisant des outils comme Postman ou curl.

Erreurs frequentes et debugging

1. Erreur : Cannot GET /

Si vous recevez l'erreur "Cannot GET /", cela signifie que votre route racine n'est pas configurée correctement.

// ❌ Mauvais
app.get('/', (req, res) => {
  // Code incorrect
});

// ✅ Correct
app.get('/', (req, res) => {
  res.send('Hello World!');
});

2. Erreur : ReferenceError: tasks is not defined

Si vous recevez l'erreur "ReferenceError: tasks is not defined", cela signifie que la variable tasks n'est pas définie dans le scope global.

// ❌ Mauvais
app.post('/tasks', (req, res) => {
  const task = req.body;
  // Code incorrect
});

// ✅ Correct
const tasks = [];
app.post('/tasks', (req, res) => {
  const task = req.body;
  tasks.push(task);
  res.status(201).send(task);
});

3. Erreur : TypeError: Cannot read property 'length' of undefined

Si vous recevez l'erreur "TypeError: Cannot read property 'length' of undefined", cela signifie que la variable tasks n'est pas définie correctement.

// ❌ Mauvais
app.get('/tasks', (req, res) => {
  // Code incorrect
});

// ✅ Correct
const tasks = [];
app.get('/tasks', (req, res) => {
  res.send(tasks);
});

Pour aller plus loin

1. Utiliser Docker pour le déploiement

Fly.io prend en charge les applications déployées dans des conteneurs Docker. Cela permet de créer une image Docker pour votre application et la déployer sur Fly.io.

2. Utiliser un système de base de données

Pour une application plus complexe, vous devrez probablement utiliser une base de données pour stocker les données persistantes.

3. Gérer le déploiement avec GitHub Actions

Fly.io peut être intégré à des outils de gestion de déploiement comme GitHub Actions pour automatiser le processus de déploiement.

Défi pratique

Créez une application simple d'API de blog qui permet aux utilisateurs de créer, lire, mettre à jour et supprimer des articles. Utilisez Express.js et un système de base de données comme MongoDB pour stocker les données. Assurez-vous que votre application est déployée sur Fly.io.


Ce tutoriel a couvert les concepts fondamentaux de déploiement d'une application Express sur Fly.io, ainsi qu'une mise en pratique complète avec un mini-projet réaliste. Il a également abordé les erreurs courantes et leur résolution, et a suggéré des pistes pour approfondir votre connaissance.

Besoin d'aide sur Express ?

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

Recevoir des conseils

Questions frequentes

Quelle est la première étape pour déployer une application Express sur Fly.io?
La première étape consiste à créer un compte sur le site web de Fly.io, puis à installer l'interface de ligne de commande (CLI) Fly. Une fois ceci fait, vous pouvez initialiser votre projet Express en utilisant la commande 'flyctl init', puis déployer votre application avec 'flyctl deploy'.
Comment configurer le fichier fly.toml pour une application Express?
Le fichier fly.toml est utilisé pour configurer les paramètres de déploiement sur Fly.io. Vous devez spécifier l'image du conteneur à utiliser (généralement 'node' ou 'alpine'), les ports d'écoute, et toute autre configuration spécifique à votre application Express.
Quelle est la différence entre le mode développement et le mode production pour une application Express sur Fly.io?
En mode développement, vous pouvez utiliser des fonctionnalités comme les recharges automatiques du serveur lorsque les fichiers source sont modifiés. En mode production, il est recommandé d'activer la compression gzip, de désactiver le débogage et de configurer une session sécurisée pour améliorer les performances et la sécurité de votre application.

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.