Docker/Buch/01 Einführung/Python

Aus Foxwiki
Version vom 10. November 2026, 10:08 Uhr von Dirkwagner (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „== Python == Damit auch die Python-Community nicht zu kurz kommt, zeigen wir hier eine dritte Variante des Hello-World-Beispiels in Python * Egal welche Python-Version Sie auf Ihrem Computer installiert haben (oder ob Sie überhaupt Python installiert haben), mit diesem Dockerfile starten Sie python in der aktuellen Version 3 <syntaxhighlight lang="bash" highlight="1" line copy> # Datei hello -world - python / Dockerfi l e ( docbuc / hello - world - pyt…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu:Navigation, Suche

Python

Damit auch die Python-Community nicht zu kurz kommt, zeigen wir hier eine dritte Variante des Hello-World-Beispiels in Python

  • Egal welche Python-Version Sie auf Ihrem Computer installiert haben (oder ob Sie überhaupt Python installiert haben), mit diesem Dockerfile starten Sie python in der aktuellen Version 3
 # Datei hello -world - python / Dockerfi l e ( docbuc / hello - world - python )
 FROM python :3
 ENV TZ =" Europe / Amsterda m "
 COPY server . py / src /
 USER www - data
 CMD [" python " , "/ src / server . py "]

Der Python-Code für den Webserver ist dem vorangegangenen Node.js-Beispiel sehr ähnlich:

 #!/ usr / bin / env python3
 from http . server import BaseHTTPReques tH an dl er , HTTPServe r
 import os , datetime

 class myServer ( BaseHTTP R eq u e s t Ha n d l e r ) :
 def do_GET ( self ) :
 load = os .getloada v g ()
 html = """ <!DOCTYPE html >
 <html >
 <head >
 <title > Hello world </ title >
 <meta charset =" utf -8" / >
 </head >
 <body >
 <h1 >Hello world : python </ h1 >
 <p > Serverzei t : { now } <br / >
 Serverau s la s t u ng ( load ) : { load }
 </body >
 </html >""". format ( now = datetime .datetime . now () . astimezo ne () ,
 load = load [0])

 self . send_res p on s e (200)
 self . send_hea d er ( 'Content - type ' , 'text / html ')
 self . end_head e rs ()
 self . wfile . write ( bytes ( html , " utf8 ") )
 return

 def run () :
 addr = ( ' ' , 8080)

 httpd = HTTPServ er ( addr , myServer )
 httpd .serve_fo r e ve r ()

 run ()

Python-Freunde werden sich gleich auskennen: In der run-Funktion wird der Web- server auf Port 8080 gestartet; die do_GET-Funktion in der myServer -Klasse behandelt den HTTP GET-Aufruf, den der Browser beim Aufruf der Adresse http://localhost aus- löst.

  • Das HTML-Gerüst in der html-Variablen wird mit dem aktuellen Datum und der load gefüllt, die Ihnen aus den vorigen Abschnitten schon bekannt ist.
  • Nach dem Setzen der Kopfzeilen wird die html-Variable in utf8 konvertiert und an den Browser gesendet (self.wfile.write)

Um diesen Service als Docker-Container zu starten, müssen Sie wie bei den vorange- gangenen Beispielen zuerst das Image erzeugen:

docker build -t hello - world - python 

Abbildung 1.3 Der Hello-World-Webserver mit dem Python-3-Container im Browser

Anschließend erzeugen und starten Sie den Container mit dem Port-Mapping auf 8080 auf dem lokalen Port (siehe Abbildung):

docker run -d --name hello - world - python \
-p 8080:808 0 hello - world - python

Vergessen Sie nicht, nach den Versuchen aufzuräumen.

  • Das bereits erwähnte docker stop hello-world-python gefolgt von docker rm hello-world-python beendet die Aus- führung und löscht den Container.
  • Wenn Docker für Sie aufräumen soll, können Sie das Kommando docker system prune verwenden.
  • Es löscht alle gestoppten Container
    • und andere Ressourcen, die wir aber noch nicht verwendet haben