Tomcat 容器化
思考
-
问题1 , Tomcat 容器化,Tomcat 如何配置
APR
连接器Tomcat 的基础镜像已经是开启了
APR
。 -
问题2, Tomcat 是每次都需要重新构建。
一、如果公司已经是一整套的 容器化流程已经跑起来的话,那么建议通过
Dockerfile
进行重新构建。二、如果只是运行于测试环境,并且是小范围使用的话,我们可以通过 挂载来实现。我们下面会详细讲。
-
问题3,Tomcat 的日志如何处理?
首先我们需要搞清楚
Tomcat
会产生哪些日志,首先在/usr/local/tomcat/logs/
下是有 5个日志的-rw-r----- 1 root root 12083 8月 5 14:48 catalina.2019-08-05.log -rw-r----- 1 root root 0 8月 5 11:23 host-manager.2019-08-05.log -rw-r----- 1 root root 0 8月 5 11:23 localhost.2019-08-05.log -rw-r----- 1 root root 552 8月 5 14:55 localhost_access_log.2019-08-05.txt -rw-r----- 1 root root 0 8月 5 11:23 manager.2019-08-05.log
这个我们可以通过挂载目录,让日志写在宿主机对应的目录。而且这些日志 ,
Tomcat
是会进行自动切割的。还有一个日志是控制台日志,
Docker
默认的日志驱动是json-log
, 最终也是写到/var/lib/docker/containers/container_id/container_id-json.log
。我们也可以通过配置 参数来实现切割和压缩。
实操
我们这边是用于 测试环境,并且我们项目没有进行容器化,使用容器是为了 让多个 app 放在不同的 Tomcat 里面。这样便于管理。
所以我们采用的是挂载宿主机目录(更新就进行替换对应的 war 包)来实现的。但是我们这里还是建议在有条件的情况下通过 Dockerfile
进行重新构建。
基于 Tomcat 镜像 8.5.43-jdk8-openjdk
挂载目录
宿主机目录 挂载至容器的目录
/opt/hbg/logs/ /usr/local/tomcat/logs/
/opt/hbg/webapps/ /usr/local/tomcat/webapps/
日志切割
日志的最大文件为50M, 超过就进行切割。 --log-opt max-size=50m
日志文件的最大数量 --log-opt max-file=100
日志文件切割后开启压缩 --log-opt compress=true
设置时区为 上海
-e TZ="Asia/Shanghai"
端口映射
宿主机 容器主机 配置
81 8080 -p 81:8080
运行命令
docker run -d -e TZ="Asia/Shanghai" --mount type=bind,src=/opt/hbg/logs/,dst=/usr/local/tomcat/logs/ --mount type=bind,src=/opt/hbg/webapps/,dst=/usr/local/tomcat/webapps/ --log-opt max-size=50m --log-opt max-file=100 --log-opt compress=true -p 81:8080 tomcat:8.5.43-jdk8-openjdk
后续更新,我们只需要更新 /opt/hbg/webapps/
下的 war 包就行了。