CMD
我的dockerfile是这样的:["python", "myproject/start_slide_server.py"]
但是为了使其工作,我需要将设置PYTHONPATH
为/app
,即myproject
如果我启动docker进程并CMD
用覆盖bash
,我可以运行以下命令
root@42e8998a8ff7:/app# export PYTHONPATH=.
root@42e8998a8ff7:/app# python myproject/start_slide_server.py
* Running on http://0.0.0.0:8090/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 236-035-556
并且它按预期工作
现在我添加行
RUN export PYTHONPATH=/app
前
CMD ["python" , "myproject/start_slide_server.py"]
它只是失败了
Traceback (most recent call last):
File "/app/myproject/start_slide_server.py", line 23, in <module>
from myproject import env
ImportError: No module named myproject
这条线路似乎RUN
没有任何影响
我真的不想ENV
在docker
命令级别进行定义,因为这PYTHONPATH
不会从一个图像改变到下一个图像。
我怎样才能实现这个目标?
我可以使用ENV
指令
ENV PYTHONPATH /app
答案1
您不应该用您的路径覆盖它PYTHONPATH
,而是将其附加;否则系统将找不到已安装的 Python 包。
- 选项1:
RUN export PYTHONPATH="$PYTHONPATH:/app"
- 选项 2:
ENV PYTHONPATH="$PYTHONPATH:/app"