我正在使用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服务
答案 0 :(得分:2)
您必须在变量前添加ENV_
前缀。因此,请尝试%(ENV_MANAGER_URL)s
而不是%(MANAGER_URL)s
来源:http://supervisord.org/configuration.html#program-x-section-settings