主管程序:x命令扩展环境变量$(ENV_VAR)s?

Jef*_*zyk 28 supervisord

我想将配置(在本例中为站点名称)放入管理程序环境变量中,以便在program:x命令参数中进行扩展.这支持吗?文档的措辞似乎表明是的.

在supervisor-3.0(配置文件的摘录)中,以下语法对我不起作用:

[supervisord]
environment = SITE="mysite"

[program:service_name]
command=/path/to/myprog/myservice /data/myprog/%(ENV_SITE)s/%(ENV_SITE)s.db %(program_name)s_%(process_num)03d
process_name=%(program_name)s_%(process_num)03d
numprocs=5
numprocs_start=1
Run Code Online (Sandbox Code Playgroud)

引发以下错误:

sudo supervisord -c supervisord.conf                                            

Error: Format string
'/path/to/myprog/myservice /data/myprog/%(ENV_SITE)s/%(ENV_SITE)s.db %(program_name)s_%(process_num)03d'
for 'command' contains names which cannot be expanded
Run Code Online (Sandbox Code Playgroud)

阅读文档,我希望环境变量可用于程序中的扩展:x命令为%(ENV_VAR)s:

http://supervisord.org/configuration.html#program-x-section-values

命令:

"字符串表达式是根据包含密钥group_name,host_node_name,process_num,program_name,here(supervisord配置文件的目录)的字典以及所有以ENV_为前缀的supervisord环境变量进行评估的."

介绍:3.0

有关:

有一些打开拉取请求可以在其他节值中进行扩展:

https://github.com/Supervisor/supervisor/issues?labels=expansions&page=1&state=open

搜索goole(或SO)不会返回尝试在命令节值中使用%(ENV_VAR)扩展的示例:

https://www.google.com/search?q=supervisord+environment+expansion+in+command

use*_*432 5

我同意主管对此不清楚(至少对我而言)。

我找到了执行 /bin/bash -c 的最简单的解决方案。在您的情况下,它将是:

    command=/bin/bash -c"/path/to/myprog/myservice /data/myprog/${SITE}/${SITE}.db ..."
Run Code Online (Sandbox Code Playgroud)

你怎么认为?

我在这里找到了灵感:http : //blog.trifork.com/2014/03/11/using-supervisor-with-docker-to-manage-processes-supporting-image-inheritance/