2016-06-28 257 views
2

Docker容器只能進入守護進程模式:我運行catalina.sh來啓動tomcat。
但問題是我的日誌不會出現在catalina.outdocker tomcat日誌問題

我可以看看Docker日誌,但這肯定無法在生產環境中運行。
我想問一下,在生產環境中,我可以如何將Tomcat日誌存儲在文檔中並且沒有容器停止?

+0

我是一個碼頭初學者認爲 – zhangyi

+0

你可以添加整個'碼頭運行'命令和一些信息,如'碼頭ps'和'碼頭ps -a' – user2915097

回答

0

你需要有一個過程在前臺運行的泊塢窗容器具有容器中運行。

我用我所有的碼頭圖像hack。 創建與下面的代碼

#!/bin/sh 

service tomcat start 
tail -f /dev/null 

腳本run.sh確保您運行泊塢窗run.sh文件之前,更改權限。

加成Dockerfile將

COPY run.sh ./run.sh 
RUN chmod 755 ./run.sh 
CMD ["./run.sh"] 
+1

你的破解是不好的做法!這意味着碼頭日誌變得毫無用處,獲取tomcat日誌變得非常困難,並且您的進程可以在沒有容器退出的情況下退出。這些都是壞事!看到接受的答案在這裏更好(更多的dockerey)方式:):http://stackoverflow.com/questions/14010448/how-to-start-tomcat-with-output-on-console-in-linux – Nauraushaun

+0

不能說這是一個不好的做法,但可能有更好的方法來做東西。 由於docker需要一個進程在前臺運行。 我在ubuntu上安裝了一個ejabbered服務器,作爲服務啓動,在這種情況下,需要有一個前臺進程。 –

1

有在this(題外話)問題的選項,使tomcat的日誌在前臺運行。

但是要回答您的實際問題,碼頭日誌命令是從容器中獲取日誌的常用方法。您也可以在主機上找到它們,因爲它們位於文件中。

但最好的方法是使用外部日誌記錄服務來收集和聚合日誌,因此您不必登錄到生產服務器。 Logentries就是一個例子(儘管它遠非完美)。 Splunk是另一個。 Docker logging drivers docs可能會有所幫助。