Comment transmettre des arguments de ligne de commande au conteneur Python Docker ?

WBOY
Libérer: 2023-09-08 13:29:05
avant
898 Les gens l'ont consulté

如何将命令行参数传递给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.

Accéder aux arguments de ligne de commande aux scripts Python

Étape 1 : Créer un script python main.py

Exemple

# 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 = " ")
Copier après la connexion

Étape 2 : Exécuter sur le terminal avec les paramètres

#python3 main.py HELLO THIS IS TUTORIALSPOINT
Copier après la connexion

Sortie

File or Script Name is : main.py
Arguments passed: HELLO THIS IS TUTORIALSPOINT
hello this is tutorialspoint
Copier après la connexion

Transmettez ces paramètres au conteneur Docker

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.

Utilisez les paramètres Docker avec ENTRYPOINT

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.

Étape 1 : Créer un fichier Docker

Exemple

FROM python
WORKDIR /app
COPY . /app/
ENTRYPOINT ["python3", "main.py"]
Copier après la connexion

Étape 2 : Construire l'image

Exemple

#docker build -t arg_py .
Copier après la connexion

Sortie

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
Copier après la connexion

Étape 3 : Exécutez le conteneur

#docker run --name mycontainer arg_py HELLO FROM TUTORIALSPOINT
Copier après la connexion

Exemple

File or Script Name is : main.py
Arguments passed: HELLO FROM TUTORIALSPOINT
hello from tutorialspoint
Copier après la connexion

Utilisez les variables d'environnement Docker via ENTRYPOINT

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.

Étape 1 : Créez un script python pour accéder aux variables d'environnement

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.

Exemple

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())
Copier après la connexion

Enregistrez le fichier ci-dessus sous main.py

Étape 2 : Créer un fichier docker

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.

Exemple

#docker build -t env_img .
Copier après la connexion

Sortie

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
Copier après la connexion

Étape 3 : Exécutez le conteneur

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

Exemple

#docker run -e User_Name="TutorialsPoint" -e Pass_Word="secret" --name env_cont env_img
Copier après la connexion

Sortie

Running with user: TutorialsPoint
Your password: secret
TUTORIALSPOINT
SECRET
Copier après la connexion

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!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!