2015-05-05 29 views
3

我有幾個需要運行supervisord的docker容器。用docker記錄到supervisord的stdout

但是,我沒有設法讓主管捕獲日誌並將它們輸出到標準輸出。看起來,主管沒有捕獲他們的輸出,並以一種與碼頭工作良好的方式吐出它。我喜歡它的前綴由進程名稱或其他東西。

我該怎麼辦?從主管手冊中不清楚。

我還會考慮除監督員以外的其他工具。它的缺點之一是它是用python編寫的,它真的會使docker容器膨脹起來。除了你的解決方案,如果你有解決方案,是否還有更適合docker的最佳工具?

回答

3

我找到了一個使用runit的解決方案。

runit的設置稍微複雜一些,但並不顯着,並且日誌記錄可以直接使用。

基本上你只需安裝runit與apt-get install runit。 然後創建將運行文件複製到/ etc/service/{servicename} /運行 運行文件只是一個bash腳本,exec是您服務的名稱。 它的stdout被自動捕獲。

我遇到麻煩的是將nginx日誌寫入stdout和stderr。 我遵循了一個將事情寫入nginx.conf的配方。它沒有工作。有效的工作很簡單:

ln -sf /dev/stdout /var/log/nginx/access.log 
ln -sf /dev/stderr /var/log/nginx/error.log 
相關問題