J'ai un script Python que je cours avec la commande suivante:
dans mon dockerfile, j'ai essayé arg et env. Aucun ne semble fonctionner p> 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? P> p> 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 Code>
Cela fonctionne parfaitement lorsque je l'exécute sur la ligne de commande
3 Réponses :
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"]
Hein, juste garder ce qui est dans la question initiale. Je suppose que c'est juste où python3 code> est installé dans toute l'image utilisée.
Utilisation de Python-3.7: Image alpine
Ensuite, il est / usr / local / bin / python3 code> ou juste python3 code>. Absolu / python3 code> ne fonctionnera pas.
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} ...
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 code>
Il y a quelques façons de faire cela. Dans mon exemple ci-dessus, utilisez entréePoint "python3", "/ espace de travail / scan-api.py" code>. Cette commande définit le fichier d'entrée (processus) pour votre conteneur pour être /workspace/span-api.py code>. 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 code>
Vous pouvez le faire de deux manières que vous souhaitez remplacer au moment de l'exécution.
1er est le plus simple et vous n'aurez pas besoin de changer de Dockerfile p> et mon script simple p> Utilisation d'ENV Vous devrez modifier DockerFile P> Je pose le chemin pour un, vous pouvez le faire pour Tous args p> afin que vous puissiez les remplacer pendant l'heure d'exécution ou avoir la possibilité de fonctionner avec une valeur par défaut. p>
UPVOTED pour suggérer l'utilisation de exécuter code> 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 code> et cmd code> 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.