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"]
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.
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.