Maison >développement back-end >Tutoriel Python >Comment transmettre des arguments de ligne de commande au conteneur Python Docker ?
Avant de comprendre les paramètres du conteneur Docker, nous devons comprendre les paramètres de ligne de commande Python et la manière dont les développeurs y accèdent. Les arguments de ligne de commande sont très utiles lorsque l’on souhaite contrôler un script Python en dehors du programme.
# 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 = " ")
#python3 main.py HELLO THIS IS TUTORIALSPOINT
File or Script Name is : main.py Arguments passed: HELLO THIS IS TUTORIALSPOINT hello this is tutorialspoint
Nous avons différentes manières de transmettre les arguments de ligne de commande aux conteneurs Docker. Certains d’entre eux sont mentionnés étape par étape ci-dessous.
L'astuce consiste à utiliser un point d'entrée avec un fichier docker et à rediriger ce point d'entrée vers le fichier python pour exécution. Après cela, transmettez simplement les paramètres python requis lors de l'exécution du conteneur Docker.
FROM python WORKDIR /app COPY . /app/ ENTRYPOINT ["python3", "main.py"]
#docker build -t arg_py .
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
#docker run --name mycontainer arg_py HELLO FROM TUTORIALSPOINT
File or Script Name is : main.py Arguments passed: HELLO FROM TUTORIALSPOINT hello from tutorialspoint
La commande Docker run nous offre des fonctionnalités extraordinaires, dont les variables d'environnement. Ici, nous utiliserons ces variables d'environnement pour transmettre des données au script Python interne sur le conteneur Docker.
La création du script python cette fois sera très similaire au premier exemple. Au lieu d'importer le module "sys", nous importerons le module "os" pour obtenir les variables d'environnement. Créez un fichier python et collez le code suivant.
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())
Enregistrez le fichier ci-dessus sous main.py
Construisez le fichier docker pour créer une nouvelle image en utilisant ce code python. Ce fichier docker est le même que celui que nous avons créé précédemment, il suffit de modifier le code python dans main.py.
#docker build -t env_img .
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
Utilisez les variables d'environnement mentionnées dans le script python lors de l'exécution du conteneur. L'exécution de Docker a un indicateur "-e" pour mentionner n'importe quelle variable d'environnement et nous pouvons mentionner plusieurs variables d'environnement à la fois
#docker run -e User_Name="TutorialsPoint" -e Pass_Word="secret" --name env_cont env_img
Running with user: TutorialsPoint Your password: secret TUTORIALSPOINT SECRET
C'est ainsi que nous pouvons transmettre des arguments de ligne de commande et des variables d'environnement au conteneur Python exécuté sur le démon Docker à l'aide du client Docker.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!