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

Ant*_*ong 3 python docker

CMD我的 dockerfile 是这样的:["python", "myproject/start_slide_server.py"]

但是,为了使其工作,我需要将其设置PYTHONPATH/app,它是myproject

如果我启动 docker 进程并覆盖CMDbash我可以运行以下命令

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 Code Online (Sandbox Code Playgroud)

它按预期工作

现在我添加一行

RUN export PYTHONPATH=/app
Run Code Online (Sandbox Code Playgroud)

CMD ["python" , "myproject/start_slide_server.py"]
Run Code Online (Sandbox Code Playgroud)

它刚刚失败了

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 Code Online (Sandbox Code Playgroud)

看起来这RUN条线根本没有任何影响

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

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


我可以使用该ENV指令

ENV PYTHONPATH /app
Run Code Online (Sandbox Code Playgroud)

小智 5

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

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