2016-06-28 5 views
2

Докер-контейнер может работать только в режиме демона: я запускаю catalina.sh, чтобы запустить tomcat.
Но проблема в том, что мой журнал не отображается в catalina.out.docker tomcat Ошибка журнала

Я могу посмотреть «журналы докеров», но это, безусловно, не может работать в производственной среде.
Я хотел бы спросить, как в производственной среде я могу хранить журнал Tomcat, хранящийся в документе, и без остановки контейнера?

+0

Я начинаю начинаю докеров – zhangyi

+0

Вы можете добавить всю команду 'docker run', а некоторую информацию, такую ​​как' docker ps' и 'docker ps -a' – user2915097

ответ

0

Вы должны иметь один процесс, выполняемый на переднем плане в Докер контейнере, чтобы иметь контейнер работает.

Я использую взломать все мои фотографии докеров. Создать run.sh скрипт со следующим кодом

#!/bin/sh 

service tomcat start 
tail -f /dev/null 

Убедитесь, прежде чем запустить файл run.sh в докер, измените разрешения.

Дополнение к Dockerfile будет

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

Ваш хак - плохая практика! Это означает, что журналы докеров становятся бесполезными, получение журналов tomcat становится очень трудным, и ваш процесс может выйти без выхода из контейнера. Это все плохие вещи! См. Принятый ответ здесь для лучшего (более докерейного) пути :): http://stackoverflow.com/questions/14010448/how-to-start-tomcat-with-output-on-console-in-linux – Nauraushaun

+0

Не могу сказать это плохая практика, но может быть лучший способ сделать что-то. Поскольку докер требует процесса для запуска на переднем плане. У меня есть ejabbered сервер, установленный на ubuntu, который запускается как служба, в этом случае нужно иметь передний процесс. –

1

Есть варианты в this (по теме) вопрос, чтобы сделать журналы Tomcat работать на переднем плане.

Но, чтобы ответить на ваш реальный вопрос, журналы докеров команда является обычным способом получения журналов из контейнера. Вы также можете найти их на хосте, поскольку они живут в файле.

Но лучший способ - использовать внешнюю службу ведения журнала для сбора и агрегации журналов, поэтому вам не нужно входить на рабочий сервер. Logentries - один из примеров (хотя он далек от совершенства). Splunk - это другое. Может помочь Docker logging drivers docs.

Смежные вопросы