26 Apr 2017
个人对container的理解是,container是无状态的,container的销毁和重建成本很低,基于此认识,希望在tomcat的container上实现tomcat程序和java代码及日志的分离
目标:
# 构建目录 tree tomcatnew tomcatnew ├── Dockerfile └── entrypoint.sh 0 directories, 2 files # Dockerfile内容 cat tomcatnew/Dockerfile ************************************************** FROM tomcat:7.0.75-jre7 COPY entrypoint.sh /usr/local/tomcat/bin/entrypoint.sh ENTRYPOINT ["/usr/local/tomcat/bin/entrypoint.sh"] ************************************************** # entrypoint.sh内容 ************************************************** #!/bin/bash /usr/local/tomcat/bin/catalina.sh start && tail -f /usr/local/tomcat/logs/catalina.out ************************************************** # 构建tomcat7容器 cd tomcatnew docker build -t tomcat7:new .
曾经试过使用tomcat官方的标准容器启动,启动命令为”catalina.sh run”,然后出现一个问题是挂载的日志目录正常,但是唯独缺少最重要的catalina.out日志
# 启动tomcat7容器 docker run -itd -p 8000:8080 -v /root/tomcat-test/logs:/usr/local/tomcat/logs:rw -v /root/tomcat-test/ROOT/:/usr/local/tomcat/webapps/ROOT tomcat7:new # /root/tomcat-test/ROOT是本地的代码目录 # 查看日志目录 ls /root/tomcat-test/logs/ catalina.2017-04-25.log host-manager.2017-04-25.log localhost_access_log.2017-04-25.txt catalina.out localhost.2017-04-25.log manager.2017-04-25.log
此处只是展示的一个tomcat容器下的日志解决方案,多个tomcat时,还是把日志输出到统一的一台日志处理机器上更方便