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