Python Flask i Docker

Python Flask I Docker



I den här handledningen ska vi lära oss hur man containeriserar en Python Flask-applikation med Docker.

Containerization är en episk funktion som låter oss utvecklare paketera en applikation tillsammans med de nödvändiga beroenden till en enda enhet. Vi kan sedan flytta behållaren och distribuera applikationen över miljöer utan att behöva oroa oss för kompatibilitet.

Vad är Flask?

Flask är ett minimalistiskt och lätt mikrowebbramverk för Python. Den tillhandahåller de väsentliga funktionerna och biblioteken som krävs för att bygga den lätta webbapplikationen med Python-språket.







Flask följer Web Server Gateway Interface eller WSGI-standarden som tillåter oss att införliva en minimalistisk design med ett flexibelt mönster som kan hantera HTTP-förfrågan och andra funktioner. Till exempel stöder Flask webbfunktioner som routing, databaser och mer.



Förutsättningar:

För att följa med koden och kommandona som tillhandahålls i denna handledning, se till att du har följande verktyg:



  1. Installerad Python-tolk på din maskin (version 3.11 och högre rekommenderas)
  2. Installerad Docker-motor på värddatorn (version 23 och högre rekommenderas)
  3. En textredigerare eller IDE som du väljer

Med de givna kraven uppfyllda kan vi fortsätta med denna handledning.





Skapa Flask-applikationen

Som du kan gissa är det första steget att skapa Python-applikationen som vi vill behålla. För vårt fall demonstrerar vi det med en minimalistisk app som skriver ut 'hej världen'.

Skapa en ny katalog för att lagra källkoden för ditt projekt och skapa en Python-fil med namnet 'app.py'.



Redigera 'app.py' med din favorittextredigerare eller IDE och lägg till koden för din applikation enligt följande:

från flaska importera Flaska

app = Flaska ( __namn__ )
@ app. rutt ( '/' )
def Hej världen ( ) :
lämna tillbaka '

Hej världen!

'

Skapa en dockerfil

Därefter måste vi definiera instruktionerna som tillåter oss att paketera applikationen som en Docker-bild. Vi använder Dockerfilen som innehåller alla instruktioner och verktyg för att ställa in bilden.

I samma katalog som 'hello.py', skapa en ny fil som heter 'Dockerfile' utan förlängning. Kör följande kommando:

$ tryck på Dockerfile

Redigera filen och lägg till koden enligt följande:

Använd den officiella Python-bilden som basbild.

FRÅN python: 3.12 -rc-smal
WORKDIR /app
KOPIERA . /app
# Installera kolven
KÖR pip-installation --no-cache- du -r krav. Text
# Exponera port 5000 för Flask-appen
ÖVERSIKT 5 000
# kör Flask-applikationen
CMD [ 'pytonorm' , 'app.py' ]

Den tidigare Dockerfilen utför följande operationer:

  • Använder den officiella Python 3.12 slimmade bilden som basbild
  • Ställer in arbetskatalogen inuti behållaren till '/app'
  • Kopierar innehållet i projektkatalogen till behållaren
  • Installerar Flask och alla andra beroenden genom att köra 'pip install' med hjälp av filen 'requirements.txt'.
  • Exponerar port 5000 för Flask-applikationen
  • Definierar kommandot för att köra Flask-applikationen

Se till att filen 'requirements.txt' finns i projektkatalogen och lägg till innehållet i filen som visas i följande:

Flaska == 2.3.3

I det här fallet anger vi att vi vill installera Flask version 2.3.3.

Bygg Docker-bilden

Nu när vi har Flask-applikationen och Dockerfile redo, kan vi fortsätta och bygga bilden med följande kommando:

docker build -t flask-docker-app .

Se till att du är i projektkatalogen innan du kör föregående kommando. Du kan ersätta flask-docker-appen med det namn som du vill tilldela din bild.

Kör Docker Container

Med Docker-bilden byggd kan vi köra behållaren baserat på bilden med kommandot 'docker run' enligt följande:

docker run -s 5 000 : 5 000 flask-docker-app

Detta bör skapa en container och mappa port 5000 från containern till port 5000 på värdsystemet.

När den har körts öppnar du webbläsaren och navigerar till http://localhost:5000 .

Du borde se 'Hej världen!' meddelande från Flask-applikationen.

Slutsats

I den här handledningen lärde du dig hur man containeriserar en enkel Python Flask-applikation med Docker.