如何在 Dockerfile 中添加PYTHONPATH
路径?这样当容器运行时,它具有正确的PYTHONPATH
?我对 Docker 完全陌生。
我已经将ENV PYTHONPATH "${PYTHONPATH}:/control"
添加到 Dockerfile 中,因为我想将目录/control
添加到PYTHONPATH
.
当我使用docker exec -it trusting_spence bash
访问容器的 bash 并打开 python 并运行目录下方的命令时control
不在列表中。
import sys print(sys.path)
FROM python:2
RUN pip install requests pymongo
RUN mkdir control
COPY control_file/ /control
ENV PYTHONPATH "${PYTHONPATH}:/control"
CMD ["python","control/control_file/job.py"]
只需在Dockerfile
中添加一个ENV
条目:
ENV PYTHONPATH "${PYTHONPATH}:/your/custom/path"
或者在启动脚本中设置PYTHONPATH
。
您正确设置了 python 路径,但您的命令不是由 shell 运行的,因此不考虑环境变量PYTHONPATH
。
将您的CMD
从"exec"形式更改为"shell"形式:
CMD python control/control_file/job.py
从文档中:
注意:与 shell 窗体不同,exec 窗体不调用命令 shell。这意味着不会发生正常的外壳处理。例如,CMD [ "echo", "$HOME" ] 不会对$HOME进行变量替换。如果你想要 shell 处理,那么要么使用 shell 形式,要么直接执行 shell,例如:CMD [ "sh", "-c", "echo $HOME" ]。当使用 exec 表单并直接执行 shell 时,就像 shell 形式一样,是 shell 在执行环境变量扩展,而不是 docker。
以更简单的方式完成。以这种方式将 .env 文件中的 python 路径添加为一行。
PYTHONPATH=/app/project_source/