我在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"]
如何将参数传递给主管?
答案 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"
的容器的环境变量中设置。