Wie übergebe ich Befehlszeilenargumente an den Python-Docker-Container?

WBOY
Freigeben: 2023-09-08 13:29:05
nach vorne
939 Leute haben es durchsucht

如何将命令行参数传递给Python Docker容器?

Bevor wir Docker-Container-Parameter verstehen, müssen wir Python-Befehlszeilenparameter verstehen und wissen, wie Entwickler darauf zugreifen. Befehlszeilenargumente sind sehr nützlich, wenn wir ein Python-Skript außerhalb des Programms steuern möchten.

Zugriff auf Befehlszeilenargumente für Python-Skripte

Schritt 1: Erstellen Sie das Python-Skript main.py

Beispiel

# sys will allow us to access the passed arguments
import sys

# sys.argv[0] access the first argument passed that is the python script name
print("\nFile or Script Name is :", sys.argv[0])

# print arguments other than the file name
print("\nArguments passed:", end = " ")
for i in range(1, len(sys.argv)):
   print(sys.argv[i], end = " ")

# Lowercase operation on the passed arguments
for i in range(1, len(sys.argv)):
   print(sys.argv[i].lower(), end = " ")
Nach dem Login kopieren

Schritt 2: Auf dem Terminal mit Parametern ausführen

#python3 main.py HELLO THIS IS TUTORIALSPOINT
Nach dem Login kopieren

Ausgabe

File or Script Name is : main.py
Arguments passed: HELLO THIS IS TUTORIALSPOINT
hello this is tutorialspoint
Nach dem Login kopieren

Übergeben Sie diese Parameter an den Docker-Container

Wir haben verschiedene Möglichkeiten, Befehlszeilenargumente an Docker-Container zu übergeben. Einige davon werden im Folgenden Schritt für Schritt erwähnt.

Verwenden Sie Docker-Parameter mit ENTRYPOINT

Der Trick besteht darin, einen Einstiegspunkt mit einer Docker-Datei zu verwenden und diesen Einstiegspunkt zur Ausführung auf die Python-Datei umzuleiten. Anschließend übergeben Sie beim Ausführen des Docker-Containers einfach die erforderlichen Python-Parameter.

Schritt 1: Docker-Datei erstellen

Beispiel

FROM python
WORKDIR /app
COPY . /app/
ENTRYPOINT ["python3", "main.py"]
Nach dem Login kopieren

Schritt 2: Erstellen Sie das Image

Beispiel

#docker build -t arg_py .
Nach dem Login kopieren

Ausgabe

Sending build context to Docker daemon 8.192kB
Step 1/4 : FROM python
---> fa9122485d1d
Step 2/4 : WORKDIR /app
---> Using cache
---> 9e9708fe1d43
Step 3/4 : COPY . /app/
---> aea9ecf32f55
Step 4/4 : ENTRYPOINT ["python3", "main.py"]
---> Running in 864440fa7988
Removing intermediate container 864440fa7988
---> d6e31e5606b8
Successfully built d6e31e5606b8
Successfully tagged arg_py:latest
Nach dem Login kopieren

Schritt 3: Führen Sie den Container aus

#docker run --name mycontainer arg_py HELLO FROM TUTORIALSPOINT
Nach dem Login kopieren

Beispiel

File or Script Name is : main.py
Arguments passed: HELLO FROM TUTORIALSPOINT
hello from tutorialspoint
Nach dem Login kopieren

Verwenden Sie Docker-Umgebungsvariablen über ENTRYPOINT

Der Docker-Ausführungsbefehl bietet uns einige außergewöhnliche Funktionen, darunter Umgebungsvariablen. Hier verwenden wir diese Umgebungsvariablen, um Daten an das interne Python-Skript im Docker-Container zu übergeben.

Schritt 1: Erstellen Sie ein Python-Skript, um auf Umgebungsvariablen zuzugreifen

Die Erstellung des Python-Skripts wird dieses Mal dem ersten Beispiel sehr ähnlich sein. Anstatt das Modul „sys“ zu importieren, importieren wir das Modul „os“, um Umgebungsvariablen abzurufen. Erstellen Sie eine Python-Datei und fügen Sie den folgenden Code ein.

Beispiel

import os

#declare some variables for environment variable
#os.getenv will fetch the environment variables from the container.
userName = os.getenv("User_Name")
passWord = os.getenv("Pass_Word")

#Now print the variables that has been fetched.
print("Running with user: %s" % userName)
print("Your password: %s" % passWord)

#Apply some operation
print(userName.upper())
print(passWord.upper())
Nach dem Login kopieren

Speichern Sie die obige Datei als main.py

Schritt 2: Docker-Datei erstellen

Erstellen Sie die Docker-Datei, um mit diesem Python-Code ein neues Image zu erstellen. Diese Docker-Datei ist dieselbe wie die, die wir zuvor erstellt haben, lediglich der Python-Code in main.py wurde geändert.

Beispiel

#docker build -t env_img .
Nach dem Login kopieren

Ausgabe

Sending build context to Docker daemon 3.072kB
Step 1/4 : FROM python
---> fa9122485d1d
Step 2/4 : WORKDIR /app
---> Using cache
---> 9e9708fe1d43
Step 3/4 : COPY . /app/
---> 31f98d53c161
Step 4/4 : ENTRYPOINT ["python3", "main.py"]
---> Running in bec1681a6842
Removing intermediate container bec1681a6842
---> 5dd89b0c7985
Successfully built 5dd89b0c7985
Successfully tagged env_img:latest
Nach dem Login kopieren

Schritt 3: Führen Sie den Container aus

Verwenden Sie beim Ausführen des Containers die im Python-Skript genannten Umgebungsvariablen. Docker Run verfügt über ein „-e“-Flag, um jede Umgebungsvariable zu erwähnen, und wir können mehrere Umgebungsvariablen gleichzeitig erwähnen

Beispiel

#docker run -e User_Name="TutorialsPoint" -e Pass_Word="secret" --name env_cont env_img
Nach dem Login kopieren

Ausgabe

Running with user: TutorialsPoint
Your password: secret
TUTORIALSPOINT
SECRET
Nach dem Login kopieren

So können wir mithilfe des Docker-Clients Befehlszeilenargumente und Umgebungsvariablen an den Python-Container übergeben, der auf dem Docker-Daemon ausgeführt wird.

Das obige ist der detaillierte Inhalt vonWie übergebe ich Befehlszeilenargumente an den Python-Docker-Container?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!