GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Jak nasadit aplikaci Python Flask API na Docker

Pokud jste v Dockeru a kontejnerech noví, naučit se nasadit aplikaci Python Flask API na Docker je skvělý způsob, jak začít. Docker vám umožňuje kontejnerizovat aplikace pomocí odlehčené technologie a zabezpečení pro rychlé nasazení aplikací.

V tomto tutoriálu se naučíte stát se svým vlastním mistrem v nastavování a nasazování aplikací Python Flask API na kontejnerech Docker.

Připravte se a začněte nasazovat!

Předpoklady

Pokud chcete postupovat krok za krokem, budete potřebovat nainstalované následující:

  • Počítač Ubuntu s nainstalovaným Dockerem. Tento tutoriál používá Ubuntu 18.04.5 LTS s Dockerem v19.03.8.
  • Python v3.9 nebo novější nainstalovaný na počítači Ubuntu. Tento tutoriál bude používat Python v3.9.2 na počítači Ubuntu.
  • Balík Elinks nainstalovaný na počítači Ubuntu použitém k testování API v tomto tutoriálu.

Vytvoření aplikace Python Flask API (GET a POST API)

Začněte tento tutoriál vytvořením aplikace Python Flask. Flask je odlehčený WSGI mikro webový aplikační framework napsaný v Pythonu. Flask poskytuje užitečné nástroje a funkce při vytváření webových aplikací v Pythonu.

Před vytvořením aplikace Python Flask si nainstalujete Python Flask a virtuální prostředí Python, kde bude Flask spouštět aplikaci.

1. Přihlaste se ke svému počítači Ubuntu pomocí svého oblíbeného klienta SSH.

2. Dále spusťte následující příkazy a vytvořte adresář s názvem ~/docker_python_flask_demo a přepnout na to. Tento adresář bude obsahovat všechny soubory, které Python a Docker vyžadují ke spuštění aplikace.

mkdir ~/docker_python_flask_demo
cd ~/docker_python_flask_demo

3. Spusťte pip příkaz níže k install virtuální prostředí Pythonu (virtualenv ), které Flask potřebuje ke spouštění aplikací. Virtuální prostředí Pythonu nabízí vlastní binární balíčky Pythonu a balíčky nainstalované pro jednotlivé aplikace, aby se zabránilo konfliktům s jinými aplikacemi.

pip install virtualenv

4. Spusťte virtualenv příkaz níže k vytvoření a aktivaci virtuálního prostředí pomocí venv modul.

virtualenv venv

5. Nyní spusťte níže uvedený příkaz k instalaci flask Pythonu balíček s pip správce balíčků.

pip install flask

6. Spuštěním následujícího příkazu aktivujte balíčky ve vašem virtuálním prostředí, než je začnete instalovat nebo používat. Tím se upraví VIRTUAL_ENV proměnná prostředí, aby ukazovala na vaše virtuální prostředí a připojuje binární virtuální prostředí Pythonu k cestě, abyste spustili správný binární soubor.

source venv/bin/activate

7. Vytvořte ještě jeden soubor s názvem requirements.txt a definujte závislost aplikace Flask, jak je znázorněno níže.

Flask==2.0.2

8. Vytvořte textový soubor ~/docker_python_flask_demo/app.py a naplňte soubor níže uvedeným kódem Pythonu.

Níže uvedený kód Pythonu importuje flask Pythonu class a vytvoří instanci třídy s názvem app . app instance třídy obsahuje dvě login() funkce spouštěné, když uživatelé odesílají požadavky na /login strana.

success() funkce se poté spustí a v prohlížeči se zobrazí uvítací zpráva „jméno uživatele“.


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. Vytvořte ještě jeden soubor s názvem ~/docker_python_flask_demo/form.html a zkopírujte/vložte níže uvedený kód.

Spuštěním HTML kódu níže vytvoříte formulář se dvěma vstupy; jedním je text poskytující vaše jméno a druhým je tlačítko pro odeslání.

Jakmile zadáte uživatelské jméno a stisknete tlačítko Odeslat, odešle se žádost o příspěvek a Flask provede další funkci a otevře novou webovou stránku na 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. Nakonec spusťte Python příkaz níže k ověření aplikace (app.py ) funguje lokálně ve vašem systému.

Python app.py

Jak můžete vidět níže, aplikace úspěšně běží na počítači Ubuntu, ale ne na Dockeru. Stejnou aplikaci spustíte na Dockeru v následujících částech.

Vytvoření souboru Docker pro nasazení aplikace Python Flask API

Právě jste vytvořili a ověřili, že aplikace Python Flask funguje lokálně na vašem počítači. Před nasazením aplikace na Docker však nejprve vytvoříte soubor Dockerfile pro definování všech sad instrukcí pro vytvoření obrazu Dockeru.

Vytvořte soubor s názvem Dockerfile v ~/docker_python_flask_demo adresář a zkopírujte/vložte obsah níže do souboru Dockerfile.

Docker použije tento Dockerfile ke spuštění všech instrukcí nebo příkazů nezbytných k vytvoření nového obrazu Dockeru nad základním obrazem (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" ]

Nyní spusťte tree příkaz níže k ověření, že všechny požadované soubory ke spuštění aplikace Python Flask jsou obsaženy v pracovním adresáři (~/docker_python_flask_demo ).

tree  

Vytvoření obrazu Dockeru pro aplikaci Python Flask API

Nyní máte požadované soubory k nasazení aplikace Python Flask, ale tyto soubory nebudou dělat nic, pokud nevytvoříte image. Spustíte docker build příkaz k vytvoření obrazu Dockeru na základě pokynů, které nastavíte v souboru Dockerfile.

Spusťte docker build příkaz níže k vytvoření obrazu Docker v pracovním adresáři (. ). Tento příkaz označí (-t ) obrázek jako flask-image verze 1 (:v1 ).

sudo docker build -t flask-image:v1 .

Nyní spusťte docker příkazem níže zobrazíte seznam všech dostupných obrázků.

sudo docker images

Níže můžete vidět různé vrácené atributy, jako je ÚKLADNO . Všimněte si ÚLOŽIŠTĚ název je obrázek baňky a je označen verzí (v1 ), jak je uvedeno níže.

Spuštění aplikace Python Flask v kontejneru Docker

Po vytvoření obrazu Dockeru nyní můžete spustit flashovou aplikaci Python v kontejneru Docker. Kontejner Docker sbalí kód a jeho závislosti pro rychlé spouštění aplikací.

1. Spusťte docker run níže proveďte následující:

  • Spusťte kontejner v odpojeném režimu (-d ), takže běží jako proces na pozadí a po vytvoření vrací výstup konzoly.
  • Mapuje port hostitele Docker (-p 5000:5000 ) s přístavem kontejneru.
  • Spustí kontejner Docker (flask-image:v1 )
sudo docker run -d -p 5000:5000 flask-image:v1

2. Dále spusťte docker příkaz níže k zobrazení seznamu všech kontejnerů v enginu Docker. Ověřte, zda Docker úspěšně vytvořil kontejner.

sudo docker ps -a

3. Nakonec spusťte níže uvedený příkaz a otevřete webový prohlížeč na počítači Ubuntu pomocí elinks.

elinks form.html

Příkaz otevře webový prohlížeč na terminálu a vyzve k zadání názvu, jak je znázorněno níže.

Zadejte své jméno a stiskněte tlačítko Odeslat.

4. Jak můžete vidět níže, po stisknutí tlačítka Odeslat tlačítko, funkce přihlášení přesměruje na funkci úspěchu v aplikaci Flask.

Závěr

Tento tutoriál vám pomohl projít procesem nastavení kontejneru Python Flask API Docker pomocí obrázků Docker. Také jste se dotkli toho, jak spouštět kontejnery Python Flask pomocí Dockerfiles, které vám umožňují upravovat a vytvářet přizpůsobené kontejnery podle vašeho výběru.

Jaké další aplikace tedy plánujete nasadit v kontejneru Docker? Možná kontejner Docker MongoDB?


Docker
  1. Jak nainstalovat Flask na Ubuntu 20.04?

  2. Nasaďte aplikaci Flask s Dokku

  3. Jak nasadit mikroslužby s Dockerem

  1. Jak nasadit aplikace s Rancherem

  2. Jak nasadit PostgreSQL jako Docker Container

  3. Jak nasadit aplikaci Flask s Nginx a Gunicorn na Ubuntu 20.04

  1. Jak nainstalovat baňku

  2. Jak nainstalovat Flask na Ubuntu 18.04

  3. Jak nasadit kontejner nginx s Dockerem na Linode