我試圖從碼頭運行命令通過超級用戶varibale,以便它可以執行帶有變量值的腳本。我們需要在運行時進行設置,以便每個開發人員都可以在rabbitmq中擁有自己的隊列,這樣我們就不會在測試期間破壞其他隊列。如何從碼頭運行命令通過超級用戶環境變量
泊塢窗運行命令:
docker run -i -p 5672:5672 -p 9200:9200 -p 9300:9300 -p 9001:9001 -p 15672:15672 -e "PARENT_HOSTNAME=MACHINED58" --rm --name shovel -t dtwill/blkmesa:shovel
泊塢窗CMD聲明(看文檔後,我知道爲什麼錯誤發生不能提供arbritrary PARM http://supervisord.org/running.html):
CMD /usr/bin/supervisord
監事配置:
[program:update_rabbit_config]
command=/src/update_rabbit_config.sh
redirect_stderr=true
priority=200
startsecs=3
腳本主管運行:
machineName=$PARENT_HOSTNAME
echo machine name = $machineName
sed -i .bak "s/|machine|/'$machineName'/" /etc/rabbitmq/rabbitmq.config
這是錯誤:
INFO exited: update_rabbit_config (exit status 1; not expected)
...因此,如果有人知道如何做到這一點,我會非常感激,並會做一個快樂的舞蹈,當我茅塞頓開。
謝謝!
[已更新]我更新了相關部分以使用答案中的建議。當然我也會包括腳本的結果,當我手動運行它(使用nsenter後連接到運行容器):
[email protected]:/src# bash update_rabbit_config.sh
machine name =
sed: -e expression #1, char 1: unknown command: `.'
貌似環境變量不是在上下文。
是的,碼頭運行中的-e設置環境變量。只要使用'時間。 – user2105103 2014-11-04 22:10:49
謝謝@Thomasleveil。我嘗試過,但是當這個子進程運行時我仍然收到錯誤。 – 2014-11-06 14:57:14
您是否從'CMD/usr/bin/supervisord $ PARENT_HOSTNAME'中刪除了'$ PARENT_HOSTNAME'?您需要這樣做,因爲PARENT_HOSTNAME將從環境變量中讀取,而不是從supervisord參數中讀取。 – Thomasleveil 2014-11-06 15:00:04