• 【原创】大叔经验分享(66)docker启动tomcat不输出catalina.out


    docker启动tomcat默认是:

    Run the default Tomcat server (CMD ["catalina.sh", "run"]):

    查看tomcat启动脚本catalish.sh

    elif [ "$1" = "run" ]; then
    
      shift
      if [ "$1" = "-security" ] ; then
        if [ $have_tty -eq 1 ]; then
          echo "Using Security Manager"
        fi
        shift
        eval exec ""$_RUNJAVA"" ""$LOGGING_CONFIG"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS 
          -D$ENDORSED_PROP=""$JAVA_ENDORSED_DIRS"" 
          -classpath ""$CLASSPATH"" 
          -Djava.security.manager 
          -Djava.security.policy==""$CATALINA_BASE/conf/catalina.policy"" 
          -Dcatalina.base=""$CATALINA_BASE"" 
          -Dcatalina.home=""$CATALINA_HOME"" 
          -Djava.io.tmpdir=""$CATALINA_TMPDIR"" 
          org.apache.catalina.startup.Bootstrap "$@" start
      else
        eval exec ""$_RUNJAVA"" ""$LOGGING_CONFIG"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS 
          -D$ENDORSED_PROP=""$JAVA_ENDORSED_DIRS"" 
          -classpath ""$CLASSPATH"" 
          -Dcatalina.base=""$CATALINA_BASE"" 
          -Dcatalina.home=""$CATALINA_HOME"" 
          -Djava.io.tmpdir=""$CATALINA_TMPDIR"" 
          org.apache.catalina.startup.Bootstrap "$@" start
      fi
    
    elif [ "$1" = "start" ] ; then
    
      if [ ! -z "$CATALINA_PID" ]; then
        if [ -f "$CATALINA_PID" ]; then
          if [ -s "$CATALINA_PID" ]; then
            echo "Existing PID file found during start."
            if [ -r "$CATALINA_PID" ]; then
              PID=`cat "$CATALINA_PID"`
              ps -p $PID >/dev/null 2>&1
              if [ $? -eq 0 ] ; then
                echo "Tomcat appears to still be running with PID $PID. Start aborted."
                echo "If the following process is not a Tomcat process, remove the PID file and try again:"
                ps -f -p $PID
                exit 1
              else
                echo "Removing/clearing stale PID file."
                rm -f "$CATALINA_PID" >/dev/null 2>&1
                if [ $? != 0 ]; then
                  if [ -w "$CATALINA_PID" ]; then
                    cat /dev/null > "$CATALINA_PID"
                  else
                    echo "Unable to remove or clear stale PID file. Start aborted."
                    exit 1
                  fi
                fi
              fi
            else
              echo "Unable to read PID file. Start aborted."
              exit 1
            fi
          else
            rm -f "$CATALINA_PID" >/dev/null 2>&1
            if [ $? != 0 ]; then
              if [ ! -w "$CATALINA_PID" ]; then
                echo "Unable to remove or write to empty PID file. Start aborted."
                exit 1
              fi
            fi
          fi
        fi
      fi
    
      shift
      if [ -z "$CATALINA_OUT_CMD" ] ; then
        touch "$CATALINA_OUT"
        catalina_out_command=">> "$CATALINA_OUT" 2>&1"
      else
        catalina_out_command="| $CATALINA_OUT_CMD"
      fi
      if [ ! -z "$CATALINA_PID" ]; then
        catalina_pid_file="$CATALINA_PID"
      else
        catalina_pid_file=/dev/null
      fi
      if [ "$1" = "-security" ] ; then
        if [ $have_tty -eq 1 ]; then
          echo "Using Security Manager"
        fi
        shift
        eval { $_NOHUP ""$_RUNJAVA"" ""$LOGGING_CONFIG"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS 
          -D$ENDORSED_PROP=""$JAVA_ENDORSED_DIRS"" 
          -classpath ""$CLASSPATH"" 
          -Djava.security.manager 
          -Djava.security.policy==""$CATALINA_BASE/conf/catalina.policy"" 
          -Dcatalina.base=""$CATALINA_BASE"" 
          -Dcatalina.home=""$CATALINA_HOME"" 
          -Djava.io.tmpdir=""$CATALINA_TMPDIR"" 
          org.apache.catalina.startup.Bootstrap "$@" start 
          2>&1 & echo $! >"$catalina_pid_file" ; } $catalina_out_command "&"
    
      else
        eval { $_NOHUP ""$_RUNJAVA"" ""$LOGGING_CONFIG"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS 
          -D$ENDORSED_PROP=""$JAVA_ENDORSED_DIRS"" 
          -classpath ""$CLASSPATH"" 
          -Dcatalina.base=""$CATALINA_BASE"" 
          -Dcatalina.home=""$CATALINA_HOME"" 
          -Djava.io.tmpdir=""$CATALINA_TMPDIR"" 
          org.apache.catalina.startup.Bootstrap "$@" start 
          2>&1 & echo $! >"$catalina_pid_file" ; } $catalina_out_command "&"
    
      fi
    
      echo "Tomcat started."
    
    elif [ "$1" = "stop" ] ; then

    可以发现run时并不会输出catalina.out(exec直接启动java),start时才会输出catalina.out(nohup后台启动java);

    要想输出catalina.out,一种是tee,一种是重定向,后者脚本如下:

    # cat start.sh
    #!/bin/sh
    
    /usr/local/tomcat/bin/catalina.sh run >> /usr/local/tomcat/logs/catalina.out 2>&1

    启动命令改为

    $ docker run -d -p 8080:8080 -v /dir/start.sh:/usr/local/tomcat/start.sh tomcat:9 sh /usr/local/tomcat/start.sh

    即可

    参考:

    https://hub.docker.com/_/tomcat

  • 相关阅读:
    Python--网络编程
    Linux-安装Windows字体
    计算机网络基础
    Cobalt Strike之CHM、LNK、HTA钓鱼
    Python之——python-nmap的安装与常用方法说明
    Python之单例模式的多种实现
    Cobalt Strike之信息收集、木马钓鱼
    Ubuntu 16.04安装Java 8
    代码审计-MetInfo 6.0.0 sql注入漏洞
    代码审计-凡诺CMS 2.1文件包含漏洞
  • 原文地址:https://www.cnblogs.com/barneywill/p/11013669.html
Copyright © 2020-2023  润新知