Docker容器只能進入守護進程模式:我運行catalina.sh
來啓動tomcat。
但問題是我的日誌不會出現在catalina.out
。docker tomcat日誌問題
我可以看看Docker日誌,但這肯定無法在生產環境中運行。
我想問一下,在生產環境中,我可以如何將Tomcat日誌存儲在文檔中並且沒有容器停止?
Docker容器只能進入守護進程模式:我運行catalina.sh
來啓動tomcat。
但問題是我的日誌不會出現在catalina.out
。docker tomcat日誌問題
我可以看看Docker日誌,但這肯定無法在生產環境中運行。
我想問一下,在生產環境中,我可以如何將Tomcat日誌存儲在文檔中並且沒有容器停止?
如果你看看官方tomcat docker image,它運行
CMD ["catalina.sh", "run"]
這足以starts tomcat in the foreground, displaying the logs on the console。
但是,正如你所說,這可能不會填充catalina.out。
CMD service tomcat start && tail -f /var/lib/tomcat/logs/catalina.out
你需要有一個過程在前臺運行的泊塢窗容器具有容器中運行。
我用我所有的碼頭圖像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"]
你的破解是不好的做法!這意味着碼頭日誌變得毫無用處,獲取tomcat日誌變得非常困難,並且您的進程可以在沒有容器退出的情況下退出。這些都是壞事!看到接受的答案在這裏更好(更多的dockerey)方式:):http://stackoverflow.com/questions/14010448/how-to-start-tomcat-with-output-on-console-in-linux – Nauraushaun
不能說這是一個不好的做法,但可能有更好的方法來做東西。 由於docker需要一個進程在前臺運行。 我在ubuntu上安裝了一個ejabbered服務器,作爲服務啓動,在這種情況下,需要有一個前臺進程。 –
有在this(題外話)問題的選項,使tomcat的日誌在前臺運行。
但是要回答您的實際問題,碼頭日誌命令是從容器中獲取日誌的常用方法。您也可以在主機上找到它們,因爲它們位於文件中。
但最好的方法是使用外部日誌記錄服務來收集和聚合日誌,因此您不必登錄到生產服務器。 Logentries就是一個例子(儘管它遠非完美)。 Splunk是另一個。 Docker logging drivers docs可能會有所幫助。
我是一個碼頭初學者認爲 – zhangyi
你可以添加整個'碼頭運行'命令和一些信息,如'碼頭ps'和'碼頭ps -a' – user2915097