V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
nutting
V2EX  ›  程序员

容器启动 tomcat 日志问题

  •  
  •   nutting · 22 天前 · 770 次点击

    我们现在系统部署在客户的一个云平台上,只要编写 dockerfile ,用平台制作镜像即可。背后可能是有 k8s 啥的。现在有个问题,我容器里跑 tomcat ,本来是输出 catalina.out 的,所以 dockerfile 最后一行加上 tomcat 启动后 && tail -f catalina.out,这没啥问题,平台的 web 界面也就能看见日志了。

    最近要把 catalina.out 去掉,我这个需求是要彻底不输出这个文件,所以只能去掉 tail -f catalina.out ,但是这样容器就会 crashloopbak ,以前的经验是必须带这么一个 tail -f 来吊住进程,哪怕 tail -f /dev/null 也行。我这次就想 dockerfile 执行 tomcat 启动,但是把控制台的日志给我带着输出到 web 界面。这个 dockerfile 到底怎么写呢。CMD ? entrypoint ?能把手动启动 bin/startup.sh 的日志在 docker 里输出来

    NotFoundEgg
        1
    NotFoundEgg  
       22 天前   ❤️ 1
    CMD ["catalina.sh", "run"]
    这样可以前台启动 tomcat 并输出日志,用 startup.sh 是后台启动的
    julyclyde
        2
    julyclyde  
       22 天前
    首先你的经验就不对
    用 tail-f 来吊住是错误的做法
    你应该是让 java 占据前台直接 stdout/stderr 输出日志
    nutting
        3
    nutting  
    OP
       22 天前
    @julyclyde 哎,是啊,一直以为这样才行。原来是要一楼的写法,这细节,我一直是 cmd 后面没有括号引号什么的 ,而且用的 startup.sh
    julyclyde
        4
    julyclyde  
       22 天前
    @nutting 你如果用 shell 的话,在停止的时候可能还会出问题
    需要用 exec 而非 call
    NotFoundEgg
        5
    NotFoundEgg  
       22 天前
    @nutting tomcat 官方镜像最后就是 CMD ,详见: https://github.com/docker-library/tomcat/blob/master/Dockerfile.template

    如果你的 dockerfile 是 FROM 的 tomcat ,那其实不用自己再写一遍 CMD ["catalina.sh", "run"]
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5200 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 07:14 · PVG 15:14 · LAX 00:14 · JFK 03:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.