0
votes

Passez les arguments Python (argart) dans le conteneur Docker

J'ai un script Python que je cours avec la commande suivante: Python3 Scan.py --API_Token 5563FF177863E97A70A45DD4 --BASE_API_URL http://101.102.34.66:4242/scanjob/ --Base_Repor_URL http://101.102.33.66:4242/ --JOB_ID 42 Cela fonctionne parfaitement lorsque je l'exécute sur la ligne de commande

dans mon dockerfile, j'ai essayé arg et env. Aucun ne semble fonctionner xxx

alors comment définir cet argument signalé dans le fichier Docker? Et quelle est la commande exécutée lors de l'exécution de l'image?


0 commentaires

3 Réponses :


1
votes

cmd code> prend exactement les mêmes arguments que vous avez utilisés à partir de la ligne de commande.

CMD ["/python3", "scan.py", "--api_token", "5563ff177863e97a70a45dd4", "--base_api_url", "http://101.102.34.66:4242/scanjob/", "--base_report_url", "http://101.102.33.66:4242/", "--job_id", "42"]


3 commentaires

Hein, juste garder ce qui est dans la question initiale. Je suppose que c'est juste où python3 est installé dans toute l'image utilisée.


Utilisation de Python-3.7: Image alpine


Ensuite, il est / usr / local / bin / python3 ou juste python3 . Absolu / python3 ne fonctionnera pas.



0
votes

C'est déroutant.

Vous devrez utiliser le Shell forme de entréePoint code> (ou cmd code>) Pour avoir une substitution variable d'environnement, par exemple p>

docker run --interactive --tty --env=TOKEN=${TOKEN} ...


2 commentaires

J'aimerai passer l'arugument lors de la course à Cocker comme ceci; Docker in -it --API_Token 5563FF177866EA70A45DD4 --BASE_API_URL http: //10.10.66: 4242 / SCANJOB / --BASE_REPORT_URL http: //10.10.66: 4242 / --Job_ID 42


Il y a quelques façons de faire cela. Dans mon exemple ci-dessus, utilisez entréePoint "python3", "/ espace de travail / scan-api.py" . Cette commande définit le fichier d'entrée (processus) pour votre conteneur pour être /workspace/span-api.py . Ensuite, lorsque vous exécutez ce conteneur, vous devrez fournir des indicateurs nécessaires. Vous pouvez docker exécuter --interactive -tty [[Votre-conteneur-image]] --Bar tet --api_Token 5563FF177863E97A70A45DD4 --Base_API_URL http://101.102.34.66:4242/scanjob/ --Base_Repor_URL http: //101.102.33.66:4242/ --JOB_ID



2
votes

Vous pouvez le faire de deux manières que vous souhaitez remplacer au moment de l'exécution.

  • AS arguments de la commande Docker Exécuter
  • comme une commande d'env to docker exécuter

    1er est le plus simple et vous n'aurez pas besoin de changer de Dockerfile xxx

    et mon script simple xxx

     Entrez la description de l'image ici

    Utilisation d'ENV Vous devrez modifier DockerFile

    Je pose le chemin pour un, vous pouvez le faire pour Tous args xxx

    afin que vous puissiez les remplacer pendant l'heure d'exécution ou avoir la possibilité de fonctionner avec une valeur par défaut. xxx


2 commentaires

UPVOTED pour suggérer l'utilisation de exécuter args pour injecter ces valeurs de manière dynamique. La question qui devrait être posée est la suivante: ces propriétés de valeurs de l'image elle-même? Ou sont-ils propriétés du travail qui fonctionne dans le conteneur? env et cmd sont destinés aux propriétés d'image.


Merci, Run Args sont dynamiques et Python le consommera comme un argument que nous le faisons sans conteneur, vous pouvez donc le dire non des propriétés de l'image seule que si le conteneur d'image Python et env est la propriété de l'image s'il est défini que vous pouvez définir Utilisation autrement ne vous aidera pas, tandis que cmd est générique, on peut excrocher une propriété d'image codée dure comme on peut trop dépasser, comme si elles ne sont pas configurées mais non configurées dans un conteneur que le conteneur ne peut pas aider.