2015-06-26 16 views
2

我一直试图通过-e选项将环境变量传递给Docker容器。该变量旨在用于容器中的主管脚本。不幸的是,这个变量没有得到解决(即他们停留在例如$INSTANCENAME)。我试过${var}"${var}",但这也没有帮助。有什么我可以做或者这是不可能的吗?在主管中使用docker环境-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_namehost_node_nameprocess_numprogram_name,这里(该supervisord配置文件的目录)的字典进行评估,并与ENV_前缀的supervisord的环境变量。

+0

感谢 - 这就像一个魅力工作! – orange