Déploiement d'une API Python Tornado conteneurisée sur Ubuntu

Architecture et prérequis

Ce guide technique détaille le processus de déploiement d'un backend développé avec Python et le framework Tornado dans un environnement Ubuntu utilisant Docker. L'architecture globale cible généralement une interface frontend (comme une application mobile ou web) communiquant avec ce conteneur backend via des requêtes HTTP.

Installation du moteur Docker sur Ubuntu

Bien que des panneaux de contrôle visuels puissent être utilisés pour simplifier les tâches, l'installation native via le gestionnaire de paquets est fortement recommandée pour les environnements de production. Exécutez les commandes suivantes pour configurer le dépôt officiel et installer Docker Engine :

sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Transfert des sources et création du Dockerfile

Transférez le code source de votre projet sur le serveur via SFTP. À la racine du répertoire du projet, créez un fichier nommé Dockerfile. Ce fichier définit l'environnement d'exécution. Voici une configuration optimisée utilisant une image allégée et des variables d'environnement pour optimiser l'exécution de Python :

FROM python:3.11-slim

ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1

WORKDIR /code

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

EXPOSE 8080

ENTRYPOINT ["python", "server.py"]

Construction et lancement du conteneur

Naviguez dans le répertoire contenant votre code et votre Dockerfile, puis construisez l'image Docker :

cd /path/to/your/project
docker build -t tornado-api-server:latest .

Une fois l'image créée, démarrez le conteneur en arrière-plan. Dans cet exemple, le port interne 8080 de l'application Tornado est mappé au port externe 9000 du serveur hôte :

docker run -d --restart=always -p 9000:8080 --name tornado-backend tornado-api-server:latest

Assurez-vous d'autoriser le port 9000 dans votre pare-feu (comme UFW). Si vous souhaitez exposer l'API via un nom de domaine avec HTTPS, configurez un reverse proxy Nginx pointant vers localhost:9000.

Vérification et gestion du cycle de vie

Validez le déploiement en interrogeant l'endpoint de l'API :

curl -X GET http://localhost:9000/api/health

Si vous devez redéployer une nouvelle version du code ou corriger une erreur de configuration, vous devez d'abord arrêter et suprpimer l'ancien conteneur avant de reconstruire l'image :

docker stop tornado-backend
docker rm tornado-backend

Étiquettes: Python tornado Docker Ubuntu conteneurisation

Publié le 4 juillet à 02h36