2014-03-07 65 views
9

如何在supervisord命令中使用環境變量? 我想:如何在supervisord命令中使用環境變量

flower --broker=$MYVAR

,但它不工作(可變沒有展開),所以我試圖用一個內嵌python腳本:

command=python -c "import os;os.system('flower --broker={0}'.format(os.environ['MYVAR']))" 

上面的命令工作,但後來我'm無法使用supervisorctl stop終止進程......我得到「停止」回來,但進程實際上仍在運行! 我該如何解決我的問題? (我不希望把這個參數在線)

+0

除非supervisord中有內置的特殊支持;你需要一個shell或其他進程來擴展一個環境變量,例如'command = sh -c'flower --broker =「$ MYVAR」''' – jfs

+0

mmm ...爲什麼如果我運行「flower --broker = $ MYVAR」在殼中它的作用?! – daveoncode

+0

,因爲* shell *正好擴展它 – jfs

回答

10

根據監事的文檔,你可以通過在前面ENV_像訪問命令環境變量:%(ENV_YOUR_VAR)s

http://supervisord.org/configuration.html#environment-variables

字符串表達式對包含鍵group_name,host_node_name,process_num,program_name,這裏(supervisord配置文件的目錄)和所有以WAR_爲前綴的supervisord的環境變量的字典進行評估。

但是,根據此提交:https://github.com/Supervisor/supervisor/commit/2d6ca34582a8a07a5dd96ae45ef62cd58a459f4f此功能在版本3.2之後添加。

+0

請記住,最新的14.04包是'3.0b2',但這需要'3.2' –

0

我能夠使用的系統環境變量監事命令是這樣的:

command=php artisan queue:listen --env=%(ENV_APP_ENVIRONMENT)s

上面的命令將擴大到command=php artisan queue:listen --env=production如果APP_ENVIRONMENT環境變量production

注意:在Supervisor配置中,您必須在系統環境變量前添加ENV_,如文檔here中所述。

相關問題