GNU/Linux >> Linux Esercitazione >  >> Panels >> Docker

Come distribuire un'applicazione API Python Flask su Docker

Se non conosci Docker e i container, imparare a distribuire un'applicazione API Python Flask su Docker è un ottimo modo per iniziare. Docker ti consente di containerizzare le applicazioni con tecnologia leggera e sicurezza per una rapida distribuzione delle applicazioni.

In questo tutorial imparerai a diventare il maestro di te stesso nella configurazione e distribuzione delle applicazioni Python Flask API sui container Docker.

Preparati e inizia a distribuire!

Prerequisiti

Se desideri seguire passo dopo passo, avrai bisogno di quanto segue installato:

  • Macchina Ubuntu con Docker installato. Questo tutorial utilizza Ubuntu 18.04.5 LTS con Docker v19.03.8.
  • Python v3.9 o successivo installato su macchina Ubuntu. Questo tutorial utilizzerà Python v3.9.2 su una macchina Ubuntu.
  • Pacchetto Elinks installato sulla macchina Ubuntu utilizzato per testare l'API in questo tutorial.

Creazione di un'applicazione API Python Flask (API GET e POST)

Inizia questo tutorial creando un'applicazione Python Flask. Flask è un framework per applicazioni micro web WSGI leggero scritto in Python. Flask fornisce utili strumenti e funzionalità per la creazione di applicazioni Web in Python.

Prima di creare un'applicazione Python Flask, installerai un Python Flask e un ambiente virtuale Python in cui Flask eseguirà un'applicazione.

1. Accedi alla tua macchina Ubuntu usando il tuo client SSH preferito.

2. Quindi, esegui i seguenti comandi per creare una directory denominata ~/docker_python_flask_demo e passa a quello. Questa directory conterrà tutti i file richiesti da Python e Docker per eseguire un'applicazione.

mkdir ~/docker_python_flask_demo
cd ~/docker_python_flask_demo

3. Esegui il pip comando di seguito per install un ambiente virtuale Python (virtualenv ) necessari a Flask per eseguire le applicazioni. Un ambiente virtuale Python offre i propri pacchetti Python binari e installati per applicazione per evitare conflitti con altre applicazioni.

pip install virtualenv

4. Esegui virtualenv comando seguente per creare e attivare un ambiente virtuale utilizzando il venv modulo.

virtualenv venv

5. Ora, esegui il comando seguente per installare Python flask pacchetto con il pip gestore di pacchetti.

pip install flask

6. Eseguire il comando seguente per attivare i pacchetti nell'ambiente virtuale prima di poter iniziare a installarli o utilizzarli. Questo modifica il VIRTUAL_ENV variabile di ambiente per puntare al tuo ambiente virtuale e antepone il binario Python dell'ambiente virtuale al percorso in modo da eseguire il binario corretto.

source venv/bin/activate

7. Crea un altro file, denominato requirements.txt e definire la dipendenza dell'applicazione Flask, come mostrato di seguito.

Flask==2.0.2

8. Crea un file di testo ~/docker_python_flask_demo/app.py e popolare il file con il codice Python sottostante.

Il codice Python sottostante importa il flask di Python class e crea un'istanza di classe denominata app . L'app l'istanza della classe contiene due login() funzioni eseguite quando gli utenti inviano richieste su /login pagina.

Il success() la funzione viene quindi eseguita, visualizzando sul browser il messaggio di benvenuto “nome-utente”.


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. Crea un altro file chiamato ~/docker_python_flask_demo/form.html e copia/incolla il codice sottostante.

L'esecuzione del codice HTML seguente crea un modulo con due input; uno è il testo per fornire il tuo nome e l'altro è un pulsante di invio.

Non appena fornisci un nome utente e premi il pulsante di invio, viene inviata una richiesta di post e Flask esegue un'altra funzione e apre una nuova pagina Web su 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. Infine, esegui Python comando seguente per verificare l'applicazione (app.py ) funziona localmente sul tuo sistema.

Python app.py

Come puoi vedere di seguito, l'applicazione funziona correttamente sulla macchina Ubuntu ma non su Docker. Lancerai la stessa applicazione su Docker nelle sezioni seguenti.

Creazione di un Dockerfile per distribuire l'applicazione API Python Flask

Hai appena creato e verificato che l'applicazione Python Flask funzioni localmente sulla tua macchina. Ma prima di distribuire l'applicazione su Docker, devi prima creare un Dockerfile per definire tutti i set di istruzioni per creare l'immagine Docker.

Crea un file chiamato Dockerfile nella ~/docker_python_flask_demo directory e copia/incolla il contenuto sottostante nel Dockerfile.

Docker utilizzerà questo Dockerfile per eseguire tutte le istruzioni o i comandi necessari per creare una nuova immagine Docker sopra l'immagine di 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" ]

Ora, esegui l'tree comando seguente per verificare che tutti i file necessari per eseguire l'applicazione Python Flask siano contenuti nella directory di lavoro (~/docker_python_flask_demo ).

tree  

Creazione di un'immagine Docker per l'applicazione API Python Flask

Ora hai i file necessari per distribuire un'applicazione Python Flask, ma quei file non faranno nulla a meno che tu non crei un'immagine. Eseguirai la docker build comando per creare un'immagine Docker in base alle istruzioni che hai impostato nel Dockerfile.

Esegui il docker build comando seguente per creare un'immagine Docker nella directory di lavoro (. ). Questo comando tagga (-t ) l'immagine come flask-image versione 1 (:v1 ).

sudo docker build -t flask-image:v1 .

Ora esegui la docker comando qui sotto per elencare tutte le immagini disponibili.

sudo docker images

Di seguito puoi vedere vari attributi restituiti, come REPOSITORY . Nota il REPOSITORY il nome è immagine-flask ed è contrassegnato con una versione (v1 ), come mostrato di seguito.

Esecuzione dell'applicazione Python Flask nel contenitore Docker

Dopo aver creato un'immagine Docker, ora puoi eseguire l'applicazione flash Python in un contenitore Docker. Un contenitore Docker racchiude il codice e le sue dipendenze per eseguire rapidamente le applicazioni.

1. Esegui docker run comando seguente per eseguire quanto segue:

  • Avvia il contenitore in modalità scollegata (-d ), quindi viene eseguito come processo in background e restituisce l'output della console al momento della creazione.
  • Mappa la porta host Docker (-p 5000:5000 ) con il porto del container.
  • Avvia il contenitore Docker (flask-image:v1 )
sudo docker run -d -p 5000:5000 flask-image:v1

2. Quindi, esegui la docker comando seguente per elencare tutti i contenitori nel motore Docker. Verifica se Docker ha creato correttamente il contenitore.

sudo docker ps -a

3. Infine, esegui il comando seguente per aprire il tuo browser web nella macchina Ubuntu usando gli elink.

elinks form.html

Il comando apre il browser web sul terminale e richiede un nome, come mostrato di seguito.

Inserisci il tuo nome e premi il pulsante Invia.

4. Come puoi vedere di seguito, dopo aver premuto il pulsante Invia pulsante, la funzione di accesso reindirizza alla funzione di successo nell'applicazione Flask.

Conclusione

Questo tutorial mirava ad aiutarti durante il processo di configurazione di un contenitore Docker API Python Flask utilizzando le immagini Docker. Hai anche accennato a come avviare i contenitori Python Flask utilizzando Dockerfiles, che ti consente di modificare e creare contenitori personalizzati a tua scelta.

Quindi quali altre applicazioni hai in mente di distribuire sul container Docker? Forse un container Docker MongoDB?


Docker
  1. Come installare Flask su Ubuntu 20.04?

  2. Distribuisci un'applicazione Flask con Dokku

  3. Come distribuire microservizi con Docker

  4. Come distribuire app con Rancher

  5. Come distribuire un container nginx con Docker su Linode

Come installare Streamlit e distribuire un'applicazione Streamlit su CentOS 8

Come distribuire Pi-Hole su Debian 11

Come installare Flask su CentOS 8

Come creare un contenitore dell'applicazione Django Docker

Come distribuire un'applicazione API Python Flask su Docker

Come distribuire e gestire un contenitore Docker MongoDB