如何使Supervisord读取bash环境变量

时间:2015-01-23 14:30:24

标签: linux bash puppet raspbian supervisord

我正在使用Supervisord来运行我的java应用程序,这需要一些环境变量来进行配置。 我在 / etc / environment

中设置环境变量
export MANAGER_URL="http://192.xxx.xxx.xxx:8080/manager/"
export MANAGER_URL2="http://192.xxx.xxx.yyy:8081/manager/"

我的 supervisor / conf.d / myjavaapp.conf 如下所示:

[supervisord]
nodaemon=false
logfile_maxbytes=100MB
logfile_backups=0

[program:java-app]
command=/usr/bin/java -jar /home/pi/deploy/java-app.jar
stdout_logfile_maxbytes=200MB
stdout_logfile_backups=2
stderr_logfile_maxbytes=100MB
stderr_logfile_backups=0
autostart=true

我知道我可以将 [java-app] 部分的环境变量设置为:

environment=MANAGER_URL="url1",MANAGER_URL2="url2" 

但这对我不起作用,因为我需要使用Puppet manifest更新变量值,Puppet manifest可以更新bash环境变量,但不能更新supervisor子流程环境变量。

我尝试使用以下方法访问shell环境变量:

environment=MANAGER_URL=%(MANAGER_URL)s,MANAGER_URL2=%(MANAGER_URL2)s

但是这导致了一个错误,指出字符串无法扩展。

我是否可以在 supervisor.conf 中阅读bash环境变量?

额外信息:
我在 raspbian 上运行它 使用/etc/init.d/中的脚本,systemd在启动时运行Supervisord Puppet代理也由Supervisor运行,因此无法重新启动Supervisor服务

1 个答案:

答案 0 :(得分:2)

您必须在变量前添加ENV_前缀。因此,请尝试%(ENV_MANAGER_URL)s而不是%(MANAGER_URL)s

来源:http://supervisord.org/configuration.html#program-x-section-settings