zoukankan      html  css  js  c++  java
  • 基于Ubuntu 14.04构建tomcat7镜像

    1、创建Dockerfile文件(如果在Windows下编辑文件,一定要将格式转化为Linux格式文件,否则将导致Linux下查看文件每行多一个^M

    # Pull base image  
    FROM ubuntu:14.04  
      
    MAINTAINER shencq "shencq@g-soft.com.cn"  
      
    # update source  
    RUN echo "deb http://archive.ubuntu.com/ubuntu trusty main universe"> /etc/apt/sources.list  
    RUN apt-get update  
      
    # Install curl  
    RUN apt-get -y install curl  
      
    # Install JDK 7  
    RUN cd /tmp &&  curl -L 'http://download.oracle.com/otn-pub/java/jdk/7u65-b17/jdk-7u65-linux-x64.tar.gz' -H 'Cookie: oraclelicense=accept-securebackup-cookie; gpw_e24=Dockerfile' | tar -xz  
    RUN mkdir -p /usr/lib/jvm  
    RUN mv /tmp/jdk1.7.0_65/ /usr/lib/jvm/java-7-oracle/  
      
    # Set Oracle JDK 7 as default Java  
    RUN update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-7-oracle/bin/java 300     
    RUN update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-7-oracle/bin/javac 300     
      
    ENV JAVA_HOME /usr/lib/jvm/java-7-oracle/  
      
    # Install tomcat7  
    RUN cd /tmp && curl -L 'http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.8/bin/apache-tomcat-7.0.8.tar.gz' | tar -xz  
    RUN mv /tmp/apache-tomcat-7.0.8/ /opt/tomcat7/  
      
    ENV CATALINA_HOME /opt/tomcat7  
    ENV PATH $PATH:$CATALINA_HOME/bin  
      
    ADD tomcat7.sh /etc/init.d/tomcat7  
    RUN chmod 755 /etc/init.d/tomcat7  
      
    # Expose ports.  
    EXPOSE 8080  
      
    # Define default command.  
    ENTRYPOINT service tomcat7 start && tail -f /opt/tomcat7/logs/catalina.out 

    2、创建tomcat7.sh文件

    export JAVA_HOME=/usr/lib/jvm/java-7-oracle/
    export JAVA_OPTS="-Dfile.encoding=UTF-8 
    -Dcatalina.logbase=/var/log/tomcatProd 
    -Dnet.sf.ehcache.skipUpdateCheck=true 
    -XX:+UseConcMarkSweepGC 
    -XX:+CMSClassUnloadingEnabled 
    -XX:+UseParNewGC 
    -XX:MaxPermSize=128m 
    -Xms512m -Xmx512m"
    export PATH=$JAVA_HOME/bin:$PATH
    TOMCAT_HOME=/opt/tomcat7
    SHUTDOWN_WAIT=20
    export CATALINA_OPTS="-Xmx512m"
    
    export CATALINA_BASE=/opt/tomcat7
    
    tomcat_pid() {
      echo `ps aux | grep org.apache.catalina.startup.Bootstrap | grep $CATALINA_BASE | grep -v grep | awk '{ print $2 }'`
    }
    start() {
      pid=$(tomcat_pid)
      if [ -n "$pid" ]
      then
    echo "Tomcat is already running (pid: $pid)"
      else
        # Start tomcat
        echo "Starting tomcat"
        #ulimit -n 100000
        umask 007
        $TOMCAT_HOME/bin/startup.sh
      fi
    return 0
    }
    
    stop() {
      pid=$(tomcat_pid)
      if [ -n "$pid" ]
      then
    echo "Stoping Tomcat"
        if [ "$USER" == "$TOMCAT_USER" ]
        then
             $TOMCAT_HOME/bin/shutdown.sh
        else
            /bin/su -p -s /bin/sh $TOMCAT_USER $TOMCAT_HOME/bin/shutdown.sh
        fi
    
        let kwait=$SHUTDOWN_WAIT
        count=0;
        until [ `ps -p $pid | grep -c $pid` = '0' ] || [ $count -gt $kwait ]
        do
    echo -n -e "
    waiting for processes to exit";
          sleep 1
          let count=$count+1;
        done
    
    if [ $count -gt $kwait ]; then
    echo -n -e "
    killing processes which didn't stop after $SHUTDOWN_WAIT seconds"
          kill -9 $pid
        fi
    else
    echo "Tomcat is not running"
      fi
    return 0
    }
    
    case $1 in
    start)
      start
    ;;
    stop)
      stop
    ;;
    restart)
      stop
      start
    ;;
    status)
      pid=$(tomcat_pid)
      if [ -n "$pid" ]
      then
    echo "Tomcat is running with pid: $pid"
      else
    echo "Tomcat is not running"
      fi
    ;;
    esac
    exit 0

    3、构建镜像

    docker build -t shencq/tomcat7 . 

    4、运行镜像

    docker run -d -p 8090:8080 shencq/tomcat7

    5、访问tomcat

      默认情况下,tomcat会占用8080端口,刚才在启动container的时候,指定了 -p 8090:8080,映射到宿主机端口就是8090。

    http://<host>:8090 #host为主机IP
  • 相关阅读:
    关于react框架的一些细节问题的思考
    shouldComponentUpdate不能直接比较object
    浅谈session,cookie,sessionStorage,localStorage的区别及应用场景
    dva相关文档
    vuex 源码:深入 vuex 之辅助函数 mapState
    第三课补充01——set类型 sorted类型命令操作详解,redis管道及事务
    第三课作业——set类型、sorted set类型的增删改查,redis的事务
    第二课补充01——redis-cli命令行详解、string类型、list类型、hash类型命令操作详解
    第二课作业——redis常用命令
    第五课——备份恢复
  • 原文地址:https://www.cnblogs.com/jytx/p/5396933.html
Copyright © 2011-2022 走看看