GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

So stellen Sie eine Python Flask-API-Anwendung auf Docker bereit

Wenn Docker und Container neu für Sie sind, ist das Erlernen der Bereitstellung einer Python Flask-API-Anwendung auf Docker ein guter Einstieg. Mit Docker können Sie Anwendungen mit leichtgewichtiger Technologie und Sicherheit für eine schnelle Anwendungsbereitstellung containerisieren.

In diesem Tutorial lernen Sie, Ihr eigener Meister im Einrichten und Bereitstellen von Python Flask-API-Anwendungen in Docker-Containern zu werden.

Machen Sie sich bereit und beginnen Sie mit der Bereitstellung!

Voraussetzungen

Wenn Sie Schritt für Schritt folgen möchten, muss Folgendes installiert sein:

  • Ubuntu-Rechner mit installiertem Docker. Dieses Tutorial verwendet Ubuntu 18.04.5 LTS mit Docker v19.03.8.
  • Python v3.9 oder höher auf Ubuntu-Rechner installiert. Dieses Tutorial verwendet Python v3.9.2 auf einem Ubuntu-Computer.
  • Elinks-Paket, das auf dem Ubuntu-Rechner installiert ist, der zum Testen der API in diesem Tutorial verwendet wird.

Erstellen einer Python Flask API-Anwendung (GET- und POST-API)

Beginnen Sie dieses Tutorial, indem Sie eine Python Flask-Anwendung erstellen. Flask ist ein leichtgewichtiges WSGI-Framework für Mikro-Webanwendungen, das in Python geschrieben ist. Flask bietet praktische Tools und Funktionen zum Erstellen von Webanwendungen in Python.

Bevor Sie eine Python Flask-Anwendung erstellen, installieren Sie eine Python Flask- und eine virtuelle Python-Umgebung, in der Flask eine Anwendung ausführt.

1. Melden Sie sich mit Ihrem bevorzugten SSH-Client bei Ihrem Ubuntu-Rechner an.

2. Führen Sie als Nächstes die folgenden Befehle aus, um ein Verzeichnis namens ~/docker_python_flask_demo zu erstellen und wechsel dazu. Dieses Verzeichnis enthält alle Dateien, die Python und Docker zum Ausführen einer Anwendung benötigen.

mkdir ~/docker_python_flask_demo
cd ~/docker_python_flask_demo

3. Führen Sie den pip aus Befehl unten zum install eine virtuelle Python-Umgebung (virtualenv ) von Flask benötigt, um die Anwendungen auszuführen. Eine virtuelle Python-Umgebung bietet ihre eigene Python-Binärdatei und anwendungsspezifisch installierte Pakete, um Konflikte mit anderen Anwendungen zu vermeiden.

pip install virtualenv

4. Führen Sie virtualenv aus Befehl unten, um eine virtuelle Umgebung mit venv zu erstellen und zu aktivieren Modul.

virtualenv venv

5. Führen Sie nun den folgenden Befehl aus, um den Python flask zu installieren Paket mit dem pip Paket-Manager.

pip install flask

6. Führen Sie den folgenden Befehl aus, um Pakete in Ihrer virtuellen Umgebung zu aktivieren, bevor Sie mit der Installation oder Verwendung beginnen können. Dies modifiziert den VIRTUAL_ENV Umgebungsvariable so, dass sie auf Ihre virtuelle Umgebung verweist und die Python-Binärdatei der virtuellen Umgebung dem Pfad voranstellt, damit Sie die richtige Binärdatei ausführen.

source venv/bin/activate

7. Erstellen Sie eine weitere Datei namens requirements.txt , und definieren Sie die Abhängigkeit der Flask-Anwendung, wie unten gezeigt.

Flask==2.0.2

8. Erstellen Sie eine Textdatei ~/docker_python_flask_demo/app.py und füllen Sie die Datei mit dem folgenden Python-Code.

Der folgende Python-Code importiert den Python-flask class und erstellt eine Klasseninstanz namens app . Die app Klasseninstanz enthält zwei login() Funktionen, die ausgeführt werden, wenn Benutzer Anfragen an /login senden Seite.

Der success() Die Funktion wird dann ausgeführt und zeigt die Willkommensnachricht „Name des Benutzers“ im Browser an.


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. Erstellen Sie eine weitere Datei namens ~/docker_python_flask_demo/form.html und kopieren/fügen Sie den folgenden Code ein.

Wenn Sie den folgenden HTML-Code ausführen, wird ein Formular mit zwei Eingaben erstellt. Einer ist ein Text, um Ihren Namen anzugeben, und der andere ist ein Senden-Button.

Sobald Sie einen Benutzernamen angeben und auf die Schaltfläche „Senden“ klicken, wird eine Post-Anforderung gesendet, und Flask führt eine weitere Funktion aus und öffnet eine neue Webseite unter 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. Führen Sie schließlich Python aus Befehl unten, um die Anwendung zu überprüfen (app.py ) funktioniert lokal auf Ihrem System.

Python app.py

Wie Sie unten sehen können, läuft die Anwendung erfolgreich auf dem Ubuntu-Computer, aber nicht auf Docker. In den folgenden Abschnitten starten Sie dieselbe Anwendung auf Docker.

Erstellen einer Docker-Datei zum Bereitstellen der Python Flask-API-Anwendung

Sie haben gerade die Python Flask-Anwendung erstellt und überprüft, ob sie lokal auf Ihrem Computer funktioniert. Aber bevor Sie die Anwendung auf Docker bereitstellen, erstellen Sie zunächst eine Docker-Datei, um alle Anweisungen zum Erstellen des Docker-Images zu definieren.

Erstellen Sie eine Datei namens Dockerfile in ~/docker_python_flask_demo Verzeichnis und kopieren Sie den folgenden Inhalt in die Dockerfile.

Docker verwendet diese Docker-Datei, um alle Anweisungen oder Befehle auszuführen, die zum Erstellen eines neuen Docker-Images über dem Basis-Image (ubuntu:18.04) erforderlich sind ).

# 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" ]

Führen Sie nun den tree aus Befehl unten, um zu überprüfen, ob alle erforderlichen Dateien zum Ausführen der Python Flask-Anwendung im Arbeitsverzeichnis (~/docker_python_flask_demo ).

tree  

Erstellen eines Docker-Images für die Python Flask-API-Anwendung

Sie haben jetzt die erforderlichen Dateien zum Bereitstellen einer Python Flask-Anwendung, aber diese Dateien werden nichts tun, es sei denn, Sie erstellen ein Image. Sie führen den docker build aus Befehl, um ein Docker-Image basierend auf den Anweisungen zu erstellen, die Sie in der Docker-Datei festgelegt haben.

Führen Sie den docker build aus Befehl unten, um ein Docker-Image im Arbeitsverzeichnis (. ). Dieser Befehl markiert (-t ) das Bild als flask-image Version 1 (:v1 ).

sudo docker build -t flask-image:v1 .

Führen Sie nun den docker aus Befehl unten, um alle verfügbaren Bilder aufzulisten.

sudo docker images

Unten sehen Sie verschiedene zurückgegebene Attribute, wie z. B. REPOSITORY . Beachten Sie das REPOSITORY Name ist flask-image und ist mit einer Version gekennzeichnet (v1 ), wie unten gezeigt.

Ausführen der Python Flask-Anwendung im Docker-Container

Nachdem Sie ein Docker-Image erstellt haben, können Sie jetzt die Python-Flash-Anwendung in einem Docker-Container ausführen. Ein Docker-Container verpackt Code und seine Abhängigkeiten, um Anwendungen schnell auszuführen.

1. Führen Sie den docker run aus Befehl unten, um Folgendes auszuführen:

  • Starten Sie den Container im getrennten Modus (-d ), sodass es als Hintergrundprozess ausgeführt wird und die Konsolenausgabe nach der Erstellung zurückgibt.
  • Bildet den Docker-Hostport ab (-p 5000:5000 ) mit dem Port des Containers.
  • Startet den Docker-Container (flask-image:v1 )
sudo docker run -d -p 5000:5000 flask-image:v1

2. Als nächstes führen Sie docker aus Befehl unten, um alle Container in der Docker-Engine aufzulisten. Überprüfen Sie, ob Docker den Container erfolgreich erstellt hat.

sudo docker ps -a

3. Führen Sie schließlich den folgenden Befehl aus, um Ihren Webbrowser auf dem Ubuntu-Computer mit elinks zu öffnen.

elinks form.html

Der Befehl öffnet den Webbrowser auf dem Terminal und fordert zur Eingabe eines Namens auf, wie unten gezeigt.

Geben Sie Ihren Namen ein und klicken Sie auf die Schaltfläche Senden.

4. Wie Sie unten sehen können, nachdem Sie auf Senden geklickt haben klicken, leitet die Anmeldefunktion zur Erfolgsfunktion in der Flask-Anwendung weiter.

Schlussfolgerung

Dieses Tutorial soll Ihnen beim Einrichten eines Python Flask API Docker-Containers mit Docker-Images helfen. Sie haben auch angesprochen, wie Sie Python Flask-Container mit Dockerfiles starten können, wodurch Sie benutzerdefinierte Container Ihrer Wahl bearbeiten und erstellen können.

Welche anderen Anwendungen möchten Sie also auf Docker-Containern bereitstellen? Vielleicht ein Docker-MongoDB-Container?


Docker
  1. Wie installiere ich Flask unter Ubuntu 20.04?

  2. Stellen Sie eine Flask-Anwendung mit Dokku bereit

  3. So stellen Sie Microservices mit Docker bereit

  4. So stellen Sie Apps mit Rancher bereit

  5. So stellen Sie einen Nginx-Container mit Docker auf Linode bereit

So installieren Sie Streamlit und stellen eine Streamlit-Anwendung unter CentOS 8 bereit

So stellen Sie Pi-Hole unter Debian 11 bereit

So installieren Sie Flask unter CentOS 8

So erstellen Sie einen Django-Docker-Anwendungscontainer

So stellen Sie eine Python Flask-API-Anwendung auf Docker bereit

So stellen Sie einen Docker-MongoDB-Container bereit und verwalten ihn