web-dev-qa-db-fra.com

Comment ajouter un chemin à PYTHONPATH dans un fichier Docker

Comment ajoutez-vous un chemin à PYTHONPATH dans un fichier Docker? Ainsi, lorsque le conteneur est exécuté, il a le bon PYTHONPATH? Je suis complètement nouveau au docker. 

J'ai ajouté ENV PYTHONPATH "${PYTONPATH}:/control" au fichier Docker car je veux ajouter le répertoire /control à PYTHONPATH

Lorsque j'accède aux conteneurs bash avec docker exec -it trusting_spence bash et que j'ouvre python et que j'exécute les commandes situées sous le répertoire control ne figure pas dans la liste. 

import sys print(sys.path)

FROM python:2
RUN pip install requests\
&& pip install pymongo

RUN mkdir control

COPY control_file/ /control

ENV PYTHONPATH "${PYTONPATH}:/control"

CMD ["python","control/control_file/job.py"] 
6
arcoxia tom

Ajoutez simplement une entrée ENV dans votre Dockerfile:

ENV PYTHONPATH "${PYTHONPATH}:/your/custom/path"

Ou définissez PYTHONPATH dans votre script de démarrage.

11
Erik Cederstrand

Vous définissez le chemin python correctement, mais votre commande n'est pas exécutée par un shell. La variable d'environnement PYTHONPATH n'est donc pas prise en compte.

modifiez votre formulaire CMD de "exec" en "shell":

CMD python control/control_file/job.py


De la Docs :

Remarque: contrairement au formulaire Shell, le formulaire exec n'invoque pas de commande Shell. Cela signifie que le traitement Shell normal ne se produit pas. Par exemple, CMD ["echo", "$ HOME"] ne fera pas de substitution de variable sur $ HOME. Si vous souhaitez un traitement Shell, utilisez le formulaire Shell ou exécutez-le directement, par exemple: CMD ["sh", "-c", "echo $ HOME"]. Lors de l'utilisation du formulaire exec et de l'exécution directe d'un shell, comme dans le cas du formulaire shell, c'est le shell qui développe les variables d'environnement, pas le menu fixe.

0
Nimrod Morag