15

如何在 supervisord 命令中使用环境变量?我试过了:

flower --broker=$MYVAR

但它不起作用(变量未扩展),所以我尝试使用内联 python 脚本:

command=python -c "import os;os.system('flower --broker={0}'.format(os.environ['MYVAR']))"

上面的命令有效,但是我无法使用...终止进程supervisorctl stop...我得到“停止”,但进程实际上仍在运行!我该如何解决我的问题?(我不想将该参数内联)

4

2 回答 2

18

根据主管文档,您可以通过前缀 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 版之后添加的。

于 2015-06-11T14:51:37.630 回答
5

我能够在 Supervisor 命令中使用系统环境变量,如下所示:

command=php artisan queue:listen --env=%(ENV_APP_ENVIRONMENT)s

上述命令将扩展为command=php artisan queue:listen --env=production如果APP_ENVIRONMENT环境变量为production.

注意:在 Supervisor 配置中,您必须为系统环境变量添加前缀,如此ENV_文档中所述。

于 2015-11-06T16:47:44.287 回答