博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于docker的tomcat服务化
阅读量:5820 次
发布时间:2019-06-18

本文共 2213 字,大约阅读时间需要 7 分钟。

tomcat作为web容器被广泛应用,但作者所在的公司restful接口特别多,每个接口都需要一个tomcat来启动,为了配置隔离,一般都会把tomcat安装文件复制多遍,分别把war包部署在对应的webapp目录下,但这样造成的问题就是tomcat安装文件占用了大量的磁盘空间,且不便于统一管理。比如要修改tomcat的某个配置,那么对应的所有的tomcat目录都要修改一遍。

基于上述情况,作者设计了一种基于docker的tomcat服务化方案。

docker不再介绍,tomcat不再介绍,下面仅仅介绍服务化方案。先上架构图

通过上图可以发现,该方案有几个特点

1、Nginx做转发。接口对外IP、端口统一

2、tomcat配置统一。因为都是基于相同的image,当然也可以每个container不一样。

当然有几点需要注意:

1、tomcat的logs/webapp需要通过volume映射挂在到container中去

2、每个tomcat服务的数据库链接配置成域名形式。这样测试、生产不需要该jdbc链接

3、保持tomcat的logs和webapp对当前用户可读写

4、对dockerHub上面的tomcat的Dockerfile进行扩展

扩展的dockerfile如下:

1 FROM tomcat:8.5.29 2  3 MAINTAINER wushaojie 4  5 COPY ./userconfig/* $CATALINA_HOME/conf/ 6  7 ENV USER=tomcat USER_ID=1000 USER_GID=1000 8  9 RUN groupadd --gid "${USER_GID}" "${USER}" && \10     useradd \11       --uid ${USER_ID} \12       --gid ${USER_GID} \13       --create-home \14       --shell /bin/bash \15        ${USER}16 17 # RUN chown -R $USER:$USER ${CATALINA_HOME}18 19 RUN set -ex; \20     rm -rf $CATALINA_HOME/webapps/*  \21     rm -f $CATALINA_HOME/conf/tomcat-users.* \22     if [ -f $CATALINA_HOME/conf/hosts ] then \23        cat $CATALINA_HOME/conf/hosts >> /etc/hosts \24     fi; \25     mv $CATALINA_HOME/conf/*.sh $CATALINA_HOME/bin26 27 RUN chmod u+x $CATALINA_HOME/bin/user-mapping.sh28 29 #ENTRYPOINT ["user-mapping.sh"]30 CMD ["user-mapping.sh"]

其中user-mapping.sh代码如下 :

#!/bin/bashif [ -z "${USER}" ]; then  echo "We need USER to be set!"; exit 100fi# if both not set we do not need to do anythingif [ -z "${HOST_USER_ID}" -a -z "${HOST_USER_GID}" ]; then    echo "Nothing to do here." ; exit 0fi# reset user_?id to either new id or if empty old (still one of above# might not be set)USER_ID=${HOST_USER_ID:=$USER_ID}USER_GID=${HOST_USER_GID:=$USER_GID}LINE=$(grep -F "${USER}" /etc/passwd)# replace all ':' with a space and create arrayarray=( ${LINE//:/ } )# home is 5th elementUSER_HOME=${array[4]}sed -i -e "s/^${USER}:\([^:]*\):[0-9]*:[0-9]*/${USER}:\1:${USER_ID}:${USER_GID}/"  /etc/passwdsed -i -e "s/^${USER}:\([^:]*\):[0-9]*/${USER}:\1:${USER_GID}/"  /etc/groupchown -R ${USER_ID}:${USER_GID} ${USER_HOME}chown -R ${USER_ID}:${USER_GID} $CATALINA_HOME#exec su - "${USER}"exec su "${USER}" -c "$CATALINA_HOME/bin/catalina.sh run"

 

转载地址:http://yszdx.baihongyu.com/

你可能感兴趣的文章
问题账户需求分析
查看>>
JavaSE-代码块
查看>>
爬取所有校园新闻
查看>>
32、SpringBoot-整合Dubbo
查看>>
python面向对象基础
查看>>
HDU 2044 一只小蜜蜂(递归)
查看>>
docker 下 安装rancher 笔记
查看>>
spring两大核心对象IOC和AOP(新手理解)
查看>>
数据分析相关
查看>>
Python LDAP中的时间戳转换为Linux下时间
查看>>
微信小程序蓝牙连接小票打印机
查看>>
环境错误2
查看>>
C++_了解虚函数的概念
查看>>
全新jmeter视频已经上架
查看>>
Windows 8下如何删除无线配置文件
查看>>
解决Windows 7中文件关联和打开方式
查看>>
oracle系列(五)高级DBA必知的Oracle的备份与恢复(全录收集)
查看>>
hp 服务器通过串口重定向功能的使用
查看>>
国外10大IT网站和博客网站
查看>>
对java语言学习的个人看法
查看>>