我想将配置(在这种情况下为站点名称)放入主管中
环境变量,用于在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

引发以下错误:
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

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

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

命令:

“字符串表达式是根据包含键的字典求值的
group_name,host_node_name,process_num,program_name,在此(目录
主管的配置文件),以及所有主管的环境变量
以ENV_为前缀。”

推出:3.0

有关:

有一些开放的拉取请求可以扩展其他部分的值:

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

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

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

最佳答案

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

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

    command=/bin/bash -c"/path/to/myprog/myservice /data/myprog/${SITE}/${SITE}.db ..."

你怎么看?

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

10-07 19:37
查看更多