GNU/Linux >> Tutoriels Linux >  >> Debian

Dockerisation de l'application Flask à l'aide de Docker sur Debian 10

Docker est un outil open source conçu pour faciliter la création, le déploiement et l'exécution d'applications à l'aide de conteneurs. Un conteneur est un package logiciel qui regroupe le code et toutes ses dépendances afin que l'application s'exécute rapidement et de manière fiable d'un environnement informatique à un autre.

Flask est un framework Web Python populaire. Il est classé comme un microframework car il ne nécessite pas d'outils ou de bibliothèques particuliers. Comparé à d'autres frameworks, il est léger et hautement structuré.

Dans ce tutoriel, nous expliquerons comment déployer l'application Flask avec Docker sur le serveur Debian 10.

Prérequis

  • Un serveur exécutant Debian 10.
  • Un mot de passe root est configuré sur votre serveur.

Mise en route

Avant de commencer, c'est une bonne idée de mettre à jour le package de votre système vers la dernière version. Vous pouvez mettre à jour tous les packages avec la commande suivante :

apt-get update -y
apt-get upgrade -y

Une fois tous les packages mis à jour, redémarrez votre système pour appliquer les modifications.

Installer les dépendances requises

Ensuite, vous devrez installer le serveur Web Nginx et d'autres dépendances dans votre système. Vous pouvez tous les installer à l'aide de la commande suivante :

apt-get install nginx apt-transport-https ca-certificates curl gnupg2 software-properties-common curl -y

Une fois tous les packages installés, vous pouvez passer à l'étape suivante.

Installer Docker

Par défaut, la dernière version de Docker n'est pas disponible dans le référentiel Debian 10. C'est donc une bonne idée de l'installer à partir du dépôt officiel de Docker.

Tout d'abord, téléchargez et ajoutez la clé GPG avec la commande suivante :

wget https://download.docker.com/linux/debian/gpg apt-key add gpg

Ensuite, ajoutez le référentiel Docker avec la commande suivante :

add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian buster stable"

Ensuite, mettez à jour le référentiel et installez le Docker avec la commande suivante :

apt-get update -y
apt-get install docker-ce -y

Une fois l'installation terminée avec succès, vérifiez l'état du Docker avec la commande suivante :

menu fixe d'état systemctl

Vous devriez obtenir le résultat suivant :

 ? docker.service - Docker Application Container Engine Loaded :chargé (/lib/systemd/system/docker.service ; activé ; préréglage du fournisseur :activé) Actif :actif (en cours d'exécution) depuis le dim 2020-04-19 06:26:25 UTC ; Il y a 1min 8s Docs :https://docs.docker.com PID principal :8883 (dockerd) Tâches :10 Mémoire :46,6 Mo CGroup :/system.slice/docker.service ??8883 /usr/bin/dockerd -H fd :// --containerd=/run/containerd/containerd.sockApr 19 06:26:24 debian10 dockerd[8883] :time="2020-04-19T06:26:24.413828757Z" level=warning msg="Votre noyau not support swap memory limitApr 19 06:26:24 debian10 dockerd[8883] :time="2020-04-19T06:26:24.413876690Z" level=warning msg="Votre noyau ne prend pas en charge cgroup rt period"Apr 19 06 :26:24 debian10 dockerd[8883] :time="2020-04-19T06:26:24.413889604Z" level=warning msg="Votre noyau ne prend pas en charge l'exécution cgroup rt Apr 19 06:26:24 debian10 dockerd[8883] :time ="2020-04-19T06:26:24.414115814Z" level=info msg="Chargement des conteneurs :start."19 avril 06:26:24 debian10 dockerd[8883] :time="2020-04-19T06:26:24.788332166 Z" level=info msg="Le pont par défaut (docker0) est attribué avec une adresse IP apr 19 06:26:24 debian10 dockerd[8883] :time="2020-04-19T06:26:24.972022325Z" lev el=info msg="Chargement des conteneurs :terminé."Apr 19 06:26:25 debian10 dockerd[8883] :time="2020-04-19T06:26:25.010940205Z" level=info msg="Daemon Docker" commit=afacb8b7f0 graphdriver(s)=o19 avril 06:26:25 debian10 dockerd[8883] :time="2020-04-19T06:26:25.011145541Z" level=info msg="Le démon a terminé l'initialisation"19 avril 06:26 :25 debian10 systemd[1] :démarrage du moteur de conteneur d'applications Docker. 19 avril 06:26:25 debian10 dockerd[8883] :time="2020-04-19T06:26:25.074603639Z" level=info msg="API listen on / var/run/docker.sock"

À ce stade, Docker est installé et en cours d'exécution. Vous pouvez maintenant passer à l'étape suivante.

Configuration de la structure du répertoire Flask

Ensuite, vous devrez créer une structure de répertoires pour contenir votre application Flask.

Créons un répertoire nommé flask dans le répertoire /var/www/ :

mkdir -p /var/www/flask

Ensuite, changez le répertoire en flask et créez la structure de répertoires pour flask :

cd /var/www/flask
mkdir -p app/static
mkdir -p app/templates

Le répertoire statique est utilisé pour stocker les images, les fichiers CSS et JavaScript, tandis que le répertoire des modèles est utilisé pour stocker les modèles HTML de votre projet.

Ensuite, vous devrez créer un fichier __init__.py dans le répertoire de l'application :

application nano/__init__.py

Ajoutez le contenu suivant pour créer une instance Flask et importez la logique à partir du fichier views.py :

from flask import Flaskapp =Flask(__name__)from app import views

Enregistrez et fermez le fichier, puis créez le fichier views.py dans le répertoire de votre application.

nano app/views.py

Ajoutez les lignes suivantes

depuis l'importation de l'application [email protected]('/')def home() :renvoie "hello world !"

Enregistrez et fermez le fichier puis créez le fichier uwsgi.ini avec la commande suivante :

nano uwsgi.ini

Ce fichier contiendra les configurations uWSGI pour notre application comme indiqué ci-dessous :

[uwsgi]module =maincallable =appmaster =true

Enregistrez et fermez le fichier lorsque vous avez terminé. uWSGI est une option de déploiement pour Nginx qui est à la fois un protocole et un serveur d'applications.

Ensuite, vous devrez créer le fichier main.py pour importer l'instance Flask nommée app à partir du package d'application. Vous pouvez le créer avec la commande suivante :

nanomain.py

Ajoutez la ligne suivante :

depuis l'application d'importation d'applications

Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, créez un fichier requirements.txt pour spécifier les dépendances que le gestionnaire de packages pip installera sur votre déploiement Docker :

nano requirements.txt

Ajoutez la ligne suivante qui correspond à la dernière version de Flask :

Flacon==1.1.2

Enregistrez et fermez le fichier lorsque vous avez terminé.

À ce stade, votre application Flask a été configurée avec succès. Vous pouvez maintenant passer à l'étape suivante.

Configurer Docker pour déployer Flask

Ensuite, vous devrez créer un Dockerfile pour créer et déployer une application flask.

Commencez par créer un Dockerfile avec la commande suivante :

cd /var/www/flask
nano Dockerfile

Ajoutez les lignes suivantes :

FROM tiangolo/uwsgi-nginx-flask:python3.6-alpine3.7RUN apk --update add bash nanoENV STATIC_URL /staticENV STATIC_PATH /var/www/app/staticCOPY ./requirements.txt /var/www/requirements. txtRUN pip install -r /var/www/requirements.txt

Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, créez un script start.sh pour créer une image à partir du Dockerfile et créez un conteneur à partir de l'image Docker résultante.

nano start.sh

Ajoutez la ligne suivante :

#!/bin/bashapp="docker.test"docker build -t ${app} .docker run -d -p 56733:80 \ --name=${app} \ -v $PWD:/app ${app}

Enregistrez et fermez le fichier lorsque vous avez terminé.

Remarque :Assurez-vous que le port 56733 est libre et utilisable.

Enfin, exécutez le script à l'aide de la commande suivante :

bash start.sh

Cela créera l'image Docker et construira un conteneur à partir de l'image résultante, comme indiqué ci-dessous :

Envoi du contexte de construction au démon Docker 9.728kBÉtape 1/6 :DE tiangolo/uwsgi-nginx-flask:python3.6-alpine3.7python3.6-alpine3.7 :Extraction de tiangolo/uwsgi-nginx-flask48ecbb6b270e :Extraction terminée 692f29ee68fa :Extraction terminée f75fc7ac1098 :Extraction terminée c30e40bb471c :Extraction terminée 

Vous pouvez maintenant lister les conteneurs en cours d'exécution avec la commande suivante :

docker ps

Vous devriez obtenir le résultat suivant :

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES22cd2bd23c91 docker.test "/entrypoint.sh /sta…" Il y a environ une minute Up Environ une minute 443/tcp, 0.0.0.0:56733->80/tcp docker.test 

Vous pouvez également vérifier le conteneur Docker en visitant l'URL http://your-server-ip:56733. Vous devriez voir l'écran suivant :

Déployer les fichiers modèles

Vous pouvez également déployer des fichiers modèles pour diffuser du contenu statique et dynamique. Vous pouvez créer un modèle de page d'accueil pour votre application avec la commande suivante :

application nano/templates/home.html

Ajoutez les codes suivants :

    Bienvenue Flask   

Page d'accueil

Ceci est la page d'accueil de notre application flask.

Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, vous devrez modifier le fichier views.py pour servir le fichier nouvellement créé :

nano app/views.py

Mettez à jour le fichier comme indiqué ci-dessous :

from flask import render_templatefrom app import [email protected]('/')def home() :return "hello world!"@app.route('/template')def template() :return render_template('home .html')

Enregistrez et fermez le fichier. Ensuite, vous devrez redémarrer les conteneurs Docker pour appliquer les modifications.

Vous pouvez redémarrer le conteneur Docker nommé docker.test avec la commande suivante :

docker arrête docker.test
docker démarre docker.test

Maintenant, ouvrez votre navigateur Web et tapez l'URL http://your-server-ip:56733/template. Vous devriez voir votre modèle nouvellement créé dans l'écran suivant :

Conclusion

Toutes nos félicitations! vous avez déployé avec succès une application Flask avec Docker sur le serveur Debian 10. Vous pouvez maintenant répliquer l'application sur différents serveurs avec une reconfiguration minimale. N'hésitez pas à me demander si vous avez des questions.


Debian
  1. Comment installer Docker sur Debian 10 Buster

  2. Comment installer Docker Engine sur Debian 11

  3. Debian – Utiliser deux écrans sur Debian ?

  4. Debian – Utiliser Live-helper hors ligne ?

  5. Installer et utiliser Docker sur Ubuntu et Debian

Installer Navidrome avec Docker

Installez Debian 11 Bullseye sur Docker CE pour le tester

Comment installer Docker sur Debian 9 Stretch

Comment installer Bitwarden sur Debian 11

Comment déployer une application API Python Flask sur Docker

Comment installer Docker CE sur Debian 11