【发布时间】:2018-01-24 16:02:41
【问题描述】:
我有一个通过 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 环境变量驱动)
第一次启动应用程序完美运行,参数被扩展。例如:
export SOME_CLI=A
/some/binary A
然后我想export新SOME_CLI=B,我希望重启后:
export SOME_CLI=B
/some/binary B
可惜还是有
/some/binary A
是否可以通过这种方式使用不同的参数重新启动已配置的应用程序?
如果没有,如何实现这样的功能?
备注:我知道我的应用程序部署在容器中,我可以使用不同的参数重新启动容器。这似乎不是正确的做法(重新启动整个容器只是为了更改一些参数)。
如果我错了,请纠正我
【问题讨论】:
-
第一件事:不在容器内运行主管。容器旨在运行一个应用程序且仅运行一个应用程序。它不是一个虚拟机,它是一个容器。环境变量被读取一次,除非进程重新启动,否则不会更新。
标签: docker environment-variables restart supervisord application-restart