Exécution d'une application Flask en mode production
Lorsque vous exécutez une application Flask dans un environnement de production, il est important d'utiliser un serveur adapté à la production plutôt que le serveur de développement intégré. Dans cette section, nous allons apprendre à exécuter une application Flask en mode production à l'aide de Docker.
Choix d'un serveur de production
Il existe plusieurs serveurs web adaptés à la production qui peuvent être utilisés pour exécuter une application Flask, tels que Gunicorn, uWSGI et Waitress. Dans cet exemple, nous utiliserons Gunicorn, un serveur web populaire et largement utilisé pour les applications Python.
Modification du Dockerfile
Pour exécuter l'application Flask en mode production à l'aide de Gunicorn, nous devons mettre à jour le Dockerfile. Remplacez le contenu du Dockerfile
par le suivant :
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt.
RUN pip install --no-cache-dir -r requirements.txt
COPY..
RUN pip install gunicorn
CMD ["gunicorn", "--bind", "0.0.0.0:5000", "app:app"]
Les principales modifications sont les suivantes :
- Nous avons ajouté
RUN pip install gunicorn
pour installer le serveur web Gunicorn.
- Nous avons modifié l'instruction
CMD
pour utiliser Gunicorn pour démarrer l'application Flask. La commande "gunicorn", "--bind", "0.0.0.0:5000", "app:app"
indique à Gunicorn de lier l'application à l'adresse 0.0.0.0:5000
et d'utiliser l'objet app
du fichier app.py
comme application WSGI.
Construction et exécution du conteneur Docker prêt pour la production
Maintenant, construisons l'image Docker et exécutons le conteneur en mode production :
- Construisez l'image Docker :
docker build -t labex-flask-app-prod.
- Exécutez le conteneur Docker :
docker run -p 5000:5000 labex-flask-app-prod
L'application devrait maintenant être exécutée en mode production à l'aide de Gunicorn.
Vérification de la configuration de production
Pour vérifier que l'application Flask est exécutée en mode production, vous pouvez utiliser la commande suivante pour consulter les journaux :
docker logs <container_id>
Vous devriez voir une sortie similaire à la suivante :
[2023-04-11 12:34:56 +0000] [1] [INFO] Starting gunicorn 20.1.0
[2023-04-11 12:34:56 +0000] [1] [INFO] Listening at: http://0.0.0.0:5000 (1)
[2023-04-11 12:34:56 +0000] [1] [INFO] Using worker: sync
[2023-04-11 12:34:56 +0000] [8] [INFO] Booting worker with pid: 8
Cela confirme que l'application Flask est exécutée en mode production à l'aide du serveur web Gunicorn.