title: 05-管理tomcat
order: 5
icon: lightbulb
1.使用dockerfile构建tomcat镜像
# 镜像自己创建的
FROM supervisor:1.0
MAINTAINER zxw<zxw@xxjsjl.cn>
# 把宿主机当前上下文的readme.txt拷贝到容器/usr/local/路径下
readme.txt /usr/local/cincontainer.txt
# 把java和tomcat添加到容器中(会自动解压)
ADD jdk-8u201-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.78.tar.gz /usr/local/
# 设置启动访问的初始位置,即工作目录,登录落脚点
ENV MYPATH /usr/local
WORKDIR $MYPATH
# 配置java和tomcat的环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_201
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINE_HOME /usr/local/apache-tomcat-9.0.78
ENV CATALINE_BASE /usr/local/apache-tomcat-9.0.78
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINE_HOME/lib:$CATALINE_HOME/bin
EXPOSE 8080
EXPOSE 9001
# 容器启动后要执行的命令
CMD /usr/local/apache-tomcat-9.0.78/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.78/bin/logs/catalina.out
2.启动容器
[root@172-0-110-100 tomcat]# docker run -itd --name supervisor_tomcat -p 8080:8080 -p 9001:9001 --privileged=true supervisor/tomcat:latest /usr/sbin/init
修改supervisor服务,开放web做测试
[inet_http_server] ; inet (TCP) server disabled by default
port=172.17.0.2:9001 ; (ip_address:port specifier, *:port for all iface)
username=user ; (default is no username (open server))
password=123 ; (default is no password (open server))
启动tomcat服务
[root@7e3176fd1279 etc]# /usr/local/apache-tomcat-9.0.78/bin/startup.sh
测试tomcat服服务
测试supervisor服务
3.编写tomcat的supervisor子进程管理文件
[root@7e3176fd1279 supervisord.d]# vim tomcat.ini
##程序名称
[program:tomcat]
directory=/usr/local/apache-tomcat-9.0.78
##程序运行的命令
command=/usr/local/apache-tomcat-9.0.78/bin/catalina.sh run
##是否在supervisord启动后tomcat也启动
autostart=true
##启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒
startsecs=10
##程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启;意思为如果不是supervisord来关闭的该进程则认为不正当关闭,supervisord会再次把该进程给启动起来,只能使用该supervisorctl来进行关闭、启动、重启操作
autorestart=true
##启动失败自动重试次数,默认是3
startretries=3
##用哪个用户启动进程,默认是root
user=root
##进程启动优先级,默认999,假Supervisord需要管理多个进程,那么值小的优先启动
priority=999
stopsignal=INT
##把stderr重定向到stdout标准输出,默认false
redirect_stderr=true
##stdout标准输出日志文件大小,日志文件大小到200M后则进行切割,切割后的日志文件会标示为catalina.out1,catalina.out2,catalina.out3...,默认50MB
stdout_logfile_maxbytes=200MB
##stdout标准输出日志文件备份数,保存100个200MB的日志文件,超过100个后老的将被删除,默认为10保存10个
stdout_logfile_backups = 100
##标准日志输出位置,如果输出位置不存在则会启动失败
stdout_logfile=/usr/local/apache-tomcat-9.0.78/logs/catalina.out
##默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
stopasgroup=false
##默认为false,向进程组发送kill信号,包括子进程
killasgroup=false
##java环境变量
environment=JAVA_HOME="/usr/local/jdk1.8.0_201",JAVA_BIN="/usr/local/jdk1.8.0_201/bin"
4.测试
停止掉tomcat服务,查看完页面之后记得把所有的tomcat进程停止掉,因为你使用supervisor所以当你进入supervisorctl命令行中的时候会有start命令你需要在命令行中执行。{切记:supervisor的进程只能由supervisor来开启}
[root@7e3176fd1279 bin]# shutdown.sh
Using CATALINA_BASE: /usr/local/apache-tomcat-9.0.78
Using CATALINA_HOME: /usr/local/apache-tomcat-9.0.78
Using CATALINA_TMPDIR: /usr/local/apache-tomcat-9.0.78/temp
Using JRE_HOME: /usr/local/jdk1.8.0_201
Using CLASSPATH: /usr/local/apache-tomcat-9.0.78/bin/bootstrap.jar:/usr/local/apache-tomcat-9.0.78/bin/tomcat-juli.jar
Using CATALINA_OPTS:
[root@7e3176fd1279 bin]# pwd
/usr/local/apache-tomcat-9.0.78/bin
重新加载supervisor服务
[root@7e3176fd1279 supervisord.d]# supervisorctl update
tomcat: added process group
浏览器查看supervisor服务和tomcat服务
使用web界面管理tomcat服务(停止、启动等),略
评论区