Supervisord压倒环境变量

时间:2018-01-24 16:02:41

标签: docker environment-variables restart supervisord application-restart

我有一个通过supervisord管理的应用程序(部署在docker容器中)

我的supervisord.conf看起来像是:

[supervisord]
nodaemon=true
logfile=/var/log/supervisor/supervisord.log
loglevel=INFO

[program:anjay]
priority=1
#USE SOME_CLI for different run configurations
command=/some/binary %(ENV_SOME_CLI)s
stdout_logfile=/dev/fd/1
stderr_logfile=/dev/fd/2
stdout_logfile_maxbytes=0
stderr_logfile_maxbytes=0
autostart=true
autorestart=false
stopsignal=INT
user=root

我希望能够使用不同的参数重启/some/binary(由SOME_CLI env变量驱动)
第一次启动应用程序非常有效,可以扩展参数。 E.g:

export SOME_CLI=A
/some/binary A

然后我想要export新的SOME_CLI=B,我希望重启后能够:

export SOME_CLI=B
/some/binary B

不幸的是还有

/some/binary A

是否可以通过这种方式重新启动具有不同参数的已配置应用程序? 如果没有,如何实现这样的功能?

备注:我知道我的应用程序已部署在容器中,我可以使用不同的参数重新启动容器。它似乎不是正确的事情(重新启动整个容器只是为了改变一些参数)。

如果我错了,请纠正我

1 个答案:

答案 0 :(得分:0)

直接在[program]部分的conf文件中添加环境变量,例如:

[program:anjay]
environment=ENV_SOME_CLI=your_value

通过告知supervisord使用supervisorctl update对该文件进行更改来应用更改。