docker k8s 集群部署tomcat,使用一个镜像,增加镜像的复用性。
发表于:2025-01-30 作者:千家信息网编辑
千家信息网最后更新 2025年01月30日,写在前面,k8s集群均已经搭建好,具体步骤可以查看前面文章。编写Dockerfile文件,目的创建一个可以公用的image,每次部署tomcat直接使用该镜像不用每次都进行build镜像。# 开始本来
千家信息网最后更新 2025年01月30日docker k8s 集群部署tomcat,使用一个镜像,增加镜像的复用性。
写在前面,k8s集群均已经搭建好,具体步骤可以查看前面文章。
编写Dockerfile文件,目的创建一个可以公用的image,每次部署tomcat直接使用该镜像不用每次都进行build镜像。
# 开始本来想使用tomcat的官方镜像,但是无奈官方镜像的系统用的都是diban 8的系统,因为我要做日志切割,需要安装cronolog软件,# 翻篇google、百度并没有找到如何使用apt-get 安装,无奈只能使用源码安装,但是安装过程需要gcc和make的支持# 使用diban 8的如果不对apt-get update 操作,安装不上,但是由于系统落后原因,导致官方或163或清华的源都不支持了。最后无奈使用了ubuntu 14的镜像。FROM ubuntu:14.04.5# tomcat安装目录ENV TOMCAT_HOME /usr/local/tomcat# 这里是放server.xml的文件的目录,这个目录需要跟tomcat/conf文件夹下的server.xml做一个超链接,为什么呢? # 因为我要使用configmap的方式对配置文件挂载,如果直接挂载到conf目录下,那么目录下的其它文件就都没了。所以我们关在的时候挂载新创建的目录,然后做一个超链接映射。ENV SERVER_XML /configfile# 配置jdk环境ENV JAVA_HOME /opt/jdk1.7.0_21ENV JRE_HOME $JAVA_HOME/jreENV JAVA_BIN $JAVA_HOME/binENV CLASSPATH $CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/libENV PATH $TOMCAT_HOME/bin:$JAVA_BIN:$JAVA_HOME/jre/bin:$PATH:$HOME/bin# 增加jdk压缩包到/opt目录下ADD jdk-7u21-linux-x64.tar.gz /optADD apache-tomcat-7.0.77.tar.gz /usr/localRUN ADD ./catalina.sh $TOMCAT_HOME/bin/ADD ./cronolog-1.6.2.tar.gz /opt/# 这个是自己手动编写的tomcat启动脚本,# 内容很简单,就两行,第一行是启动tomcat使用 sh /usr/local/tomcat/bin/startup.sh;# 容器要求必须要有前台执行的进程的容器才不会退出,所以第二行随便tail -f 了一个日志即可。ADD ./start.sh $TOMCAT_HOME/bin/WORKDIR /opt/cronolog-1.6.2RUN mv /usr/local/apache-tomcat-7.0.77 /usr/local/tomcat && chmod a+x /usr/local/tomcat/bin/*.sh && \ apt-get update -y && apt-get install gcc make -y && \ ./configure && make && make install && chmod a+x $TOMCAT_HOME/bin/start.sh $TOMCAT_HOME/bin/catalina.sh && \ rm -rf $TOMCAT_HOME/webapps/* && rm -rf $TOMCAT_HOME/conf/server.xml && mkdir $SERVER_XML && \ touch $SERVER_XML/server.xml && ln -s $SERVER_XML/server.xml $TOMCAT_HOME/conf/server.xmlEXPOSE 8080ENTRYPOINT ["/bin/sh", "/usr/local/tomcat/bin/start.sh"]
需要用到配置文件内容如下:
start.sh
#!/bin/shsh /usr/local/tomcat/bin/startup.shtail -f /usr/local/tomcat/bin/catalina.sh
catalina.sh
################以上与原有tomcat默认配置文件一致################421 #touch "$CATALINA_OUT"422 if [ "$1" = "-security" ] ; then423 if [ $have_tty -eq 1 ]; then424 echo "Using Security Manager"425 fi426 shift427 eval $_NOHUP "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \428 -D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\"" \429 -classpath "\"$CLASSPATH\"" \430 -Djava.security.manager \431 -Djava.security.policy=="\"$CATALINA_BASE/conf/catalina.policy\"" \432 -Dcatalina.base="\"$CATALINA_BASE\"" \433 -Dcatalina.home="\"$CATALINA_HOME\"" \434 -Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \435 org.apache.catalina.startup.Bootstrap "$@" start \436 >> "$CATALINA_OUT" 2>&1 "&"437 438 else439 eval $_NOHUP "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \440 -D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\"" \441 -classpath "\"$CLASSPATH\"" \442 -Dcatalina.base="\"$CATALINA_BASE\"" \443 -Dcatalina.home="\"$CATALINA_HOME\"" \444 -Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \445 org.apache.catalina.startup.Bootstrap "$@" start 2>&1 | /usr/local/sbin/cronolog "$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out >> /dev/null &446 447 fi################以下与原有tomcat默认配置文件一致################
下面直接build镜像就可以了。
创建一个configmap用于存放tomcat的server.xml文件。
kubectl create configmap cm-server.xml --from-file='server.xml的绝对路径'
编写k8s的yaml文件
apiVersion: apps/v1kind: Deploymentmetadata: name: dubbo-admin labels: app: dubbo-adminspec: replicas: 1 selector: matchLabels: app: dubbo-admin template: metadata: labels: app: dubbo-admin spec: # 需要仔细说明的地方,这里我们创建了3个volume,分别存放tomcat的log、java项目代码和一个使用configmap形式存放的tomcat配置文件(server.xml) volumes: - name: "code-war" hostPath: path: "/Disk/data/tomcat/dubbo-admin/code/" - name: "tomcat-log" hostPath: path: "/Disk/data/tomcat/dubbo-admin/log/" - name: "serverxml" configMap: name: tomcat-dubbo-admin-server.xml items: - key: server.xml path: server.xml containers: - name: dubbo-admin # 容器使用刚刚build过的镜像 image: fushuitong/tomcat:jdk7u21-tomcat7.0.77-cronolog1.6.2 ports: - containerPort: 8080 #挂载3个volume,挂载目录如下 volumeMounts: - name: code-war mountPath: /usr/local/tomcat/webapps - name: tomcat-log mountPath: /usr/local/tomcat/logs - name: serverxml mountPath: /configfile
直接创建这个Deployment即可。
创建一个service,把tomcat的端口应道node上,以供外面访问,如果tomcat前面还有nginx,可以直接映射到clusterIP.使用nginx进行转发即可。
变了service的yaml文件
apiVersion: v1kind: Servicemetadata: name: dubbo-adminspec: ports: - port: 8080 nodePort: 32333 targetPort: dubbo-admin protocol: TCP selector: app: dubbo-admin type: NodePort
最后通过访问任意node的ip的32333端口就能访问到对应的tomca项目了。
文件
目录
镜像
配置
官方
容器
无奈
系统
一致
内容
我要
日志
端口
链接
项目
支持
集群
不对
一行
不用
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
国家网络安全大会
数据库关系模式是什么
mysql 数据库推送
用友t3连接服务器显示链接错误
去哪里查的到网络安全密钥
海南软件开发厂家
通辽软件开发公司
数据库开发认证
服务器怎么使用root解除限制
网络安全等级红色
港行ps4pro怎么连接服务器
网络技术对网络协议的理解
高级筛选选择数据库
数据库设置成utf8
华为网络技术订单班
信息通信网络技术与应用
服务器繁忙的英语
医院网络安全工作辅导
前端测试用数据库
行网络安全法的第一条
高邮租房软件开发
浙江数享互联网科技有限公司
服务器共享管理软件
网吧无盘服务器管理
延安市开展网络安全应急演习
网络安全设备运行巡检台账
地理数据库的产生
如何一次性百度出所有数据库
同上一堂网络安全
网络安全都学习什么