Python Flask v Dockerju

Python Flask V Dockerju



V tej vadnici se bomo naučili, kako z Dockerjem shraniti aplikacijo Python Flask.

Kontejnerizacija je epska funkcija, ki nam razvijalcem omogoča, da zapakiramo aplikacijo skupaj z zahtevanimi odvisnostmi v eno samo enoto. Nato lahko premaknemo vsebnik in razmestimo aplikacijo v različnih okoljih, ne da bi nam bilo treba skrbeti za združljivost.

Kaj je Flask?

Flask je minimalistično in lahko mikro spletno ogrodje za Python. Zagotavlja bistveno funkcijo in knjižnice, ki so potrebne za izdelavo lahke spletne aplikacije z uporabo jezika Python.







Flask sledi standardu Web Server Gateway Interface ali WSGI, ki nam omogoča vključitev minimalističnega dizajna s prilagodljivim slogom, ki lahko obravnava zahtevo HTTP in druge funkcije. Flask na primer podpira spletne funkcije, kot so usmerjanje, baze podatkov in drugo.



Predpogoji:

Če želite slediti kodi in ukazom, ki so na voljo v tej vadnici, zagotovite, da imate ta orodja:



  1. Nameščen tolmač Python na vašem računalniku (priporočena je različica 3.11 in novejša)
  2. Nameščen motor Docker na gostiteljskem računalniku (priporočena je različica 23 in novejša)
  3. Urejevalnik besedil ali IDE po vaši izbiri

Ko so dane zahteve izpolnjene, lahko nadaljujemo s to vadnico.





Ustvarite aplikacijo Flask

Kot lahko ugibate, je prvi korak ustvarjanje aplikacije Python, ki jo želimo pospraviti v kontejner. Za naš primer to prikazujemo z minimalistično aplikacijo, ki natisne »hello world«.

Ustvarite nov imenik za shranjevanje izvorne kode za vaš projekt in ustvarite datoteko Python z imenom »app.py«.



Uredite »app.py« s svojim najljubšim urejevalnikom besedil ali IDE in dodajte kodo za svojo aplikacijo, kot sledi:

od bučko uvoz Bučka

aplikacija = Bučka ( __ime__ )
@ aplikacija pot ( '/' )
def Pozdravljen, svet ( ) :
vrnitev '

Pozdravljen, svet!

'

Ustvarite datoteko Docker

Nato moramo definirati navodila, ki nam omogočajo pakiranje aplikacije kot Dockerjeve slike. Uporabljamo datoteko Dockerfile, ki vsebuje vsa navodila in orodja za nastavitev slike.

V istem imeniku kot »hello.py« ustvarite novo datoteko z imenom »Dockerfile« brez pripone. Zaženite naslednji ukaz:

$ dotaknite se datoteke Docker

Uredite datoteko in dodajte kodo, kot sledi:

Uporabite uradno sliko Python kot osnovno sliko.

IZ pythona: 3.12 -rc-tanek
DELOVNI DIR /app
KOPIRATI . /aplikacija
# Namestite Flask
ZAGNI pip install --no-cache- ti -r zahteve. txt
# Razkrijte vrata 5000 za aplikacijo Flask
IZPOSTITE 5000
# zaženite aplikacijo Flask
CMD [ 'python' , 'app.py' ]

Prejšnja datoteka Dockerfile izvaja naslednje operacije:

  • Kot osnovno sliko uporablja uradno tanko sliko Python 3.12
  • Nastavi delovni imenik znotraj vsebnika na »/app«
  • Kopira vsebino imenika projekta v vsebnik
  • Namesti Flask in vse druge odvisnosti z zagonom »pip install« z uporabo datoteke »requirements.txt«.
  • Izpostavi vrata 5000 za aplikacijo Flask
  • Definira ukaz za zagon aplikacije Flask

Prepričajte se, da datoteka »requirements.txt« obstaja v imeniku projekta in dodajte vsebino datoteke, kot je prikazano spodaj:

Bučka == 2.3.3

V tem primeru določimo, da želimo namestiti Flask različice 2.3.3.

Zgradite sliko Dockerja

Zdaj, ko imamo pripravljeno aplikacijo Flask in Dockerfile, lahko nadaljujemo in zgradimo sliko z naslednjim ukazom:

docker build -t flask-docker-app.

Prepričajte se, da ste v imeniku projekta, preden zaženete prejšnji ukaz. Aplikacijo flask-docker-a lahko zamenjate z imenom, ki ga želite dodeliti svoji sliki.

Zaženite Docker Container

Z zgrajeno sliko Dockerja lahko zaženemo vsebnik na podlagi slike z ukazom »docker run«, kot sledi:

docker run -p 5000 : 5000 flask-docker-aplikacija

To bi moralo ustvariti vsebnik in preslikati vrata 5000 iz vsebnika v vrata 5000 v gostiteljskem sistemu.

Po izvedbi odprite brskalnik in se pomaknite do http://localhost:5000 .

Videti bi morali 'Hello, World!' sporočilo aplikacije Flask.

Zaključek

V tej vadnici ste se naučili, kako preprosto aplikacijo Python Flask spraviti v vsebnik s pomočjo Dockerja.