GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Comment déployer une application API Python Flask sur Docker

Si vous débutez avec Docker et les conteneurs, apprendre à déployer une application API Python Flask sur Docker est un excellent moyen de commencer. Docker vous permet de conteneuriser les applications avec une technologie et une sécurité légères pour un déploiement rapide des applications.

Dans ce didacticiel, vous apprendrez à devenir votre propre maître dans la configuration et le déploiement d'applications API Python Flask sur des conteneurs Docker.

Préparez-vous et commencez à déployer !

Prérequis

Si vous souhaitez suivre étape par étape, vous devez installer les éléments suivants :

  • Machine Ubuntu avec Docker installé. Ce tutoriel utilise Ubuntu 18.04.5 LTS avec Docker v19.03.8.
  • Python v3.9 ou version ultérieure installé sur la machine Ubuntu. Ce tutoriel utilisera Python v3.9.2 sur une machine Ubuntu.
  • Package Elinks installé sur la machine Ubuntu utilisée pour tester l'API dans ce tutoriel.

Création d'une application API Python Flask (API GET et POST)

Lancez ce didacticiel en créant une application Python Flask. Flask est un framework d'application micro Web WSGI léger écrit en Python. Flask fournit des outils et des fonctionnalités pratiques pour créer des applications Web en Python.

Avant de créer une application Python Flask, vous installerez un Python Flask et un environnement virtuel Python où Flask exécutera une application.

1. Connectez-vous à votre machine Ubuntu à l'aide de votre client SSH préféré.

2. Ensuite, exécutez les commandes suivantes pour créer un répertoire nommé ~/docker_python_flask_demo et passez à cela. Ce répertoire contiendra tous les fichiers requis par Python et Docker pour exécuter une application.

mkdir ~/docker_python_flask_demo
cd ~/docker_python_flask_demo

3. Exécutez le pip commande ci-dessous pour install un environnement virtuel Python (virtualenv ) nécessaires à Flask pour exécuter les applications. Un environnement virtuel Python propose son propre binaire Python et des packages installés par application pour éviter les conflits avec d'autres applications.

pip install virtualenv

4. Exécutez le virtualenv commande ci-dessous pour créer et activer un environnement virtuel en utilisant le venv module.

virtualenv venv

5. Maintenant, exécutez la commande ci-dessous pour installer le Python flask package avec le pip directeur chargé d'emballage.

pip install flask

6. Exécutez la commande suivante pour activer les packages dans votre environnement virtuel avant de pouvoir commencer à les installer ou à les utiliser. Ceci modifie le VIRTUAL_ENV variable d'environnement pour pointer vers votre environnement virtuel et ajoute le binaire Python de l'environnement virtuel au chemin afin que vous exécutiez le binaire correct.

source venv/bin/activate

7. Créez un autre fichier, nommé requirements.txt , et définissez la dépendance de l'application Flask, comme indiqué ci-dessous.

Flask==2.0.2

8. Créez un fichier texte ~/docker_python_flask_demo/app.py et remplissez le fichier avec le code Python ci-dessous.

Le code Python ci-dessous importe le Python flask class et crée une instance de classe nommée app . L'app l'instance de classe contient deux login() fonctions exécutées lorsque les utilisateurs envoient des requêtes sur /login page.

Le success() La fonction s'exécute alors, affichant le message de bienvenue "nom de l'utilisateur" sur le navigateur.


from flask import Flask , redirect , url_for , request # Importing the class flask
# app is the object or instance of Flask
app = Flask(__name__)
# app.route informs Flask about the URL to be used by function
@app.route('/success/<name>')
# Creating a function named success
def success(name):
    return 'welcome %s' % name

@app.route('/login', methods = ['GET','POST'])
# Creating a function named login 
def login():
    if request.method == 'POST':
       user = request.form['adamlistek']
       return redirect(url_for('success', name = user)) 
    else:
       return "INVALID"
# Programs executes from here in a development server (locally on your system) 
# with debugging enabled. 
  
if __name__ == '__main__':
   app.run(debug = True)

9. Créez un autre fichier nommé ~/docker_python_flask_demo/form.html et copiez/collez le code ci-dessous.

L'exécution du code HTML ci-dessous crée un formulaire avec deux entrées ; l'un est un texte pour fournir votre nom, et l'autre est un bouton d'envoi.

Dès que vous fournissez un nom d'utilisateur et appuyez sur le bouton Soumettre, une demande de publication est envoyée et Flask exécute une autre fonction et ouvre une nouvelle page Web sur http://localhost:5000/success/.

<html>
  <body>
    <form action="http://localhost:5000/login" method="post">
      <p>Please Enter your name</p>
      <p><input type="text" name="adamlistek" /></p>
      <p><input type="submit" value="Submit" /></p>
    </form>
  </body>
</html>

10. Enfin, exécutez le Python commande ci-dessous pour vérifier l'application (app.py ) fonctionne localement sur votre système.

Python app.py

Comme vous pouvez le voir ci-dessous, l'application s'exécute avec succès sur la machine Ubuntu mais pas sur Docker. Vous lancerez la même application sur Docker dans les sections suivantes.

Création d'un Dockerfile pour déployer l'application API Python Flask

Vous venez de créer et de vérifier que l'application Python Flask fonctionne localement sur votre machine. Mais avant de déployer l'application sur Docker, vous allez d'abord créer un Dockerfile pour définir tous les ensembles d'instructions pour créer l'image Docker.

Créez un fichier nommé Dockerfile dans le ~/docker_python_flask_demo répertoire, et copiez/collez le contenu ci-dessous dans le Dockerfile.

Docker utilisera ce Dockerfile pour exécuter toutes les instructions ou commandes nécessaires pour créer une nouvelle image Docker au-dessus de l'image de base (ubuntu:18.04 ).

# Sets the base image for subsequent instructions
FROM ubuntu:18.04
# Sets the working directory in the container  
WORKDIR /app
RUN apt-get update -y
RUN apt-get install -y python-pip python-dev
# Copies the files to the working directory
COPY form.html /app/form.html
# Copies the dependency files to the working directory
COPY requirements.txt /app/requirements.txt
# Install dependencies
RUN pip install -r requirements.txt
# Copies everything to the working directory
COPY . /app
# Command to run on container start    
CMD [ "python" , "./app.py" ]

Maintenant, exécutez l'tree commande ci-dessous pour vérifier que tous les fichiers requis pour exécuter l'application Python Flask sont contenus dans le répertoire de travail (~/docker_python_flask_demo ).

tree  

Création d'une image Docker pour l'application API Python Flask

Vous disposez maintenant des fichiers requis pour déployer une application Python Flask, mais ces fichiers ne feront rien à moins que vous ne créiez une image. Vous exécuterez la docker build commande pour créer une image Docker basée sur les instructions que vous avez définies dans le Dockerfile.

Exécutez la docker build commande ci-dessous pour créer une image Docker dans le répertoire de travail (. ). Cette commande balise (-t ) l'image sous la forme flask-image version1 (:v1 ).

sudo docker build -t flask-image:v1 .

Maintenant, lancez le docker commande ci-dessous pour lister toutes les images disponibles.

sudo docker images

Ci-dessous, vous pouvez voir divers attributs renvoyés, tels que REPOSITORY . Remarquez le RÉPOSITOIRE le nom est flask-image et est étiqueté avec une version (v1 ), comme indiqué ci-dessous.

Exécuter l'application Python Flask dans Docker Container

Après avoir créé une image Docker, vous pouvez maintenant exécuter l'application flash Python dans un conteneur Docker. Un conteneur Docker regroupe le code et ses dépendances pour exécuter les applications rapidement.

1. Exécutez le docker run commande ci-dessous pour effectuer les opérations suivantes :

  • Démarrer le conteneur en mode détaché (-d ), il s'exécute donc en arrière-plan et renvoie la sortie de la console lors de la création.
  • Mappe le port hôte Docker (-p 5000:5000 ) avec le port du conteneur.
  • Lance le conteneur Docker (flask-image:v1 )
sudo docker run -d -p 5000:5000 flask-image:v1

2. Ensuite, exécutez le docker commande ci-dessous pour répertorier tous les conteneurs dans le moteur Docker. Vérifiez si Docker a créé le conteneur avec succès.

sudo docker ps -a

3. Enfin, exécutez la commande ci-dessous pour ouvrir votre navigateur Web sur la machine Ubuntu à l'aide d'elinks.

elinks form.html

La commande ouvre le navigateur Web sur le terminal et demande un nom, comme indiqué ci-dessous.

Entrez votre nom et appuyez sur le bouton Soumettre.

4. Comme vous pouvez le voir ci-dessous, après avoir cliqué sur Soumettre bouton, la fonction de connexion redirige vers la fonction de réussite dans l'application Flask.

Conclusion

Ce didacticiel visait à vous aider tout au long du processus de configuration d'un conteneur Docker d'API Python Flask à l'aide d'images Docker. Vous avez également expliqué comment lancer des conteneurs Python Flask à l'aide de Dockerfiles, ce qui vous permet de modifier et de créer des conteneurs personnalisés de votre choix.

Alors, quelles autres applications avez-vous en tête de déployer sur le conteneur Docker ? Peut-être un conteneur Docker MongoDB ?


Docker
  1. Comment installer Flask sur Ubuntu 20.04 ?

  2. Déployer une application Flask avec Dokku

  3. Comment déployer des microservices avec Docker

  4. Comment déployer des applications avec Rancher

  5. Comment déployer un conteneur nginx avec Docker sur Linode

Comment installer Streamlit et déployer une application Streamlit sur CentOS 8

Comment déployer Pi-Hole sur Debian 11

Comment installer Flask sur CentOS 8

Comment créer un conteneur d'application Django Docker

Comment déployer une application API Python Flask sur Docker

Comment déployer et gérer un conteneur Docker MongoDB