web-dev-qa-db-de.com

Wie fügen Sie einen Pfad zu PYTHONPATH in einer Docker-Datei hinzu?

Wie füge ich einen PYTHONPATH-Pfad in einer Docker-Datei hinzu? Wenn der Container ausgeführt wird, hat er den richtigen PYTHONPATH? Ich bin völlig neu bei Docker. 

Ich habe ENV PYTHONPATH "${PYTONPATH}:/control" zur Docker-Datei hinzugefügt, da ich das Verzeichnis /control zu PYTHONPATH hinzufügen möchte. 

Wenn ich mit docker exec -it trusting_spence bash auf die Container-Bash zugreife, öffne Python und führe die Befehle unterhalb des Verzeichnisses aus, control ist nicht in der 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

Fügen Sie einfach einen ENV-Eintrag in Ihre Dockerfile ein:

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

Oder legen Sie PYTHONPATH in Ihrem Startskript fest.

11

Sie setzen den Python-Pfad richtig, aber Ihr Befehl wird nicht von einer Shell ausgeführt. Daher wird die Umgebungsvariable PYTHONPATH nicht berücksichtigt.

Ändern Sie Ihre CMD von "exec" in "Shell":

CMD python control/control_file/job.py


Aus den Docs :

Hinweis: Im Gegensatz zum Shell-Formular ruft das Exec-Formular keine Befehls-Shell auf. Dies bedeutet, dass keine normale Shell-Verarbeitung stattfindet. Beispielsweise führt CMD ["echo", "$ HOME"] keine Variablensubstitution bei $ HOME durch. Wenn Sie Shell-Verarbeitung wünschen, verwenden Sie entweder das Shell-Formular oder führen Sie direkt eine Shell aus, zum Beispiel: CMD ["sh", "-c", "echo $ HOME"]. Wenn Sie das exec-Formular verwenden und eine Shell direkt ausführen, wie im Fall des Shell-Formulars, führt die Shell die Erweiterung der Umgebungsvariablen aus, nicht das Andockfenster.

0
Nimrod Morag