如何在docker文件中设置环境变量?

如何在docker文件中设置环境变量?

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没有任何影响

我真的不想ENVdocker命令级别进行定义,因为这PYTHONPATH不会从一个图像改变到下一个图像。

我怎样才能实现这个目标?


我可以使用ENV指令

ENV PYTHONPATH /app

答案1

您不应该用您的路径覆盖它PYTHONPATH,而是将其附加;否则系统将找不到已安装的 Python 包。

  • 选项1:RUN export PYTHONPATH="$PYTHONPATH:/app"
  • 选项 2:ENV PYTHONPATH="$PYTHONPATH:/app"

相关内容