如何在docker中向supervisord传递参数?

时间:2016-08-09 07:32:00

标签: docker supervisor

我在docker中运行两个python服务。这两个服务都需要一个共同的参数,我在“docker run”

中提供了这个参数

目前,我通过调用shell脚本中的服务来实现此目的。但是,我认为正确的解决方案是在docker中使用supervisor并通过它运行两个服务。

我想实现这样的目标:

[program:A]
command=python -m A.py <argument>

[program:B]
command=python -m B.py <argument>

dockerfile如下所示:

COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
CMD ["/usr/bin/supervisord"]

如何将参数传递给主管?

1 个答案:

答案 0 :(得分:7)

您可以使用环境变量:来自supervisor doc

  

supervisord启动时环境中存在的环境变量可以使用Python字符串表达式语法%(ENV_X)s在配置文件中使用:

[program:example]
command=/usr/bin/example --loglevel=%(ENV_LOGLEVEL)s
  

在上面的示例中,表达式%(ENV_LOGLEVEL)s将扩展为环境变量LOGLEVEL的值。

在您的情况下,您的公共参数可以在传递给具有docker run -d -e "COMMON_ARG=myarg"的容器的环境变量中设置。