2015-06-26 3 views
2

Я пытаюсь передать переменную окружения в контейнер Docker через опцию -e. Эта переменная предназначена для использования в сценарии супервизора внутри контейнера. К сожалению, переменная не решена (т. Е. Они остаются, например, $INSTANCENAME). Я пробовал ${var} и "${var}", но это тоже не помогло. Есть ли что-нибудь, что я могу сделать, или это просто невозможно?Использование среды докеров -e переменная в супервизоре

Команда докер запуск:

sudo docker run -d -e "INSTANCENAME=instance-1" -e "FOO=2" -v /var/app/tmp:/var/app/tmp -t myrepos/app:tag 

и файл руководитель:

[program:app] 
command=python test.py --param1=$FOO 
stderr_logfile=/var/app/log/$INSTANCENAME.log 
directory=/var/app 
autostart=true 

ответ

4

Переменные передаются в контейнер, но руководитель не позволяет использовать переменные окружения, как это внутри файлы конфигурации.

Вы должны просмотреть supervisor documentation, и в частности его части, содержащие строковые выражения. Например, для варианта command:

Обратите внимание, что значение command может включать в себя строковые выражения Python, например, /path/to/programname --port=80%(process_num)02d может расширяться до /path/to/programname --port=8000 во время выполнения.

Строковых выражения вычисляются против словаря, содержащего ключи group_name, host_node_name, process_num, program_name, здесь (каталог из supervisord конфигурационного файла), и переменные окружения всех supervisord в префиксе ENV_.

+0

Спасибо, что сработало как шарм! – orange

Смежные вопросы