内容简介:写在前面,k8s集群均已经搭建好,具体步骤可以查看前面文章。编写Dockerfile文件,目的创建一个可以公用的image,每次部署tomcat直接使用该镜像不用每次都进行build镜像。需要用到配置文件内容如下:
写在前面,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_21
ENV JRE_HOME $JAVA_HOME/jre
ENV JAVA_BIN $JAVA_HOME/bin
ENV CLASSPATH $CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
ENV PATH $TOMCAT_HOME/bin:$JAVA_BIN:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
# 增加jdk压缩包到/opt目录下
ADD jdk-7u21-linux-x64.tar.gz /opt
ADD apache-tomcat-7.0.77.tar.gz /usr/local
RUN
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.2
RUN 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.xml
EXPOSE 8080
ENTRYPOINT ["/bin/sh", "/usr/local/tomcat/bin/start.sh"]
需要用到配置文件内容如下:
start.sh
#!/bin/sh sh /usr/local/tomcat/bin/startup.sh tail -f /usr/local/tomcat/bin/catalina.sh
catalina.sh
################以上与原有tomcat默认配置文件一致################ 421 #touch "$CATALINA_OUT" 422 if [ "$1" = "-security" ] ; then 423 if [ $have_tty -eq 1 ]; then 424 echo "Using Security Manager" 425 fi 426 shift 427 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 else 439 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/v1
kind: Deployment
metadata:
name: dubbo-admin
labels:
app: dubbo-admin
spec:
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: v1
kind: Service
metadata:
name: dubbo-admin
spec:
ports:
- port: 8080
nodePort: 32333
targetPort: dubbo-admin
protocol: TCP
selector:
app: dubbo-admin
type: NodePort
最后通过访问任意node的ip的32333端口就能访问到对应的tomca项目了。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python for Data Analysis
Wes McKinney / O'Reilly Media / 2012-11-1 / USD 39.99
Finding great data analysts is difficult. Despite the explosive growth of data in industries ranging from manufacturing and retail to high technology, finance, and healthcare, learning and accessing d......一起来看看 《Python for Data Analysis》 这本书的介绍吧!