执行前加载环境变量

Ji *_*ANG 9 environment-variables supervisord

我计划在环境变量中存储一些应用程序设置,例如MYSQL_URL = mysql:// ...我使用supervisord来管理应用程序进程.如何在子进程启动之前加载环境变量?特别是当这些设置改变时,我希望重新启动子进程将加载新设置.

另外我想知道在哪里存储这些环境变量.我可以"导出$(cat filename)"的文件?或者一些更好的方法.我很好奇Heroku如何管理它的环境变量.

Mar*_*ers 20

您可以在[ program:x]部分的supervisord配置中设置每进程环境变量,这些变量将在启动时传递给进程:

[program:yourprocess]
# ... other settings
environment =
    MYSQL_URL=mysql://,
    OTHER_VAR="some other value"
Run Code Online (Sandbox Code Playgroud)

请注意,您需要在每个变量之间使用逗号.我在上面的例子中也使用了换行符,这些都是可选的.如果环境值中包含空格,则需要将值括在引号中.

您还可以使用相同的格式为该部分中的所有进程设置环境变量[supervisord].

最后但同样重要的是,当supervisord启动时设置的任何环境变量也会传递给由supervisord管理的进程.有关详细信息,请参阅环境变量文档部分.

请注意,如果更改配置文件中配置的环境变量,则需要向supervisord发出信号以重新加载配置并重新启动子进程以便它们获取这些更改:

supervisorctl update
supervisorctl restart yourprocess
Run Code Online (Sandbox Code Playgroud)

但是,如果您在supervisord之外更改环境变量,则需要一起关闭supervisord以获取这些变量:

supervisorctl shutdown
supervisord
Run Code Online (Sandbox Code Playgroud)

  • 如果您还将您的超级用户配置文件存储在版本控制中,则会失败 (3认同)