Назад | Перейти на главную страницу

Как установить переменную среды в файле докера?

В CMD моего файла докеров это: ["python", "myproject/start_slide_server.py"]

Однако, чтобы это сработало, мне нужно установить PYTHONPATH к /app, который является родительским каталогом myproject

Если я запустил процесс докера и переопределил 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

Вы не должны перезаписывать PYTHONPATH со своим путем, но добавьте его; в противном случае система не найдет установленные пакеты Python.

  • Опция 1: RUN export PYTHONPATH="$PYTHONPATH:/app"
  • Вариант 2: ENV PYTHONPATH="$PYTHONPATH:/app"