如何在supervisord命令中使用环境变量? 我试过了:
flower --broker=$MYVAR
但它没有工作(变量没有扩展),所以我尝试使用内联python脚本:
command=python -c "import os;os.system('flower --broker={0}'.format(os.environ['MYVAR']))"
上面的命令有效,但是我无法使用supervisorctl stop
终止该过程...我得到了#34;停止"回来但是这个过程实际上还在运行!
我怎样才能解决我的问题? (我不想把这个参数放在内联中)
答案 0 :(得分:11)
根据Supervisor文档,您可以通过在ENV_前面添加前缀来访问命令中的环境变量:%(ENV_YOUR_VAR)s
http://supervisord.org/configuration.html#environment-variables
字符串表达式是根据包含键group_name,host_node_name,process_num,program_name,here(supervisord配置文件的目录)的字典以及所有以ENV _为前缀的supervisord环境变量来计算的。
但是,根据此提交:https://github.com/Supervisor/supervisor/commit/2d6ca34582a8a07a5dd96ae45ef62cd58a459f4f此功能是在3.2版之后添加的。
答案 1 :(得分:1)
我能够在Supervisor命令中使用系统环境变量,如下所示:
_next
如果command=php artisan queue:listen --env=%(ENV_APP_ENVIRONMENT)s
环境变量为command=php artisan queue:listen --env=production
,则上述命令将扩展为APP_ENVIRONMENT
。
注意:在Supervisor配置中,您必须在系统环境变量前加production
作为前缀,如文档here中所述。