15、Nginx+Tomcat+NFS实现动静分离
Nginx+Tomcat+NFS实现动静分离
系统基础镜像
#自定义Centos 基础镜像
FROM xmtx.harbor.com/baseimages/centos:7.9.2009
MAINTAINER xmtx
ADD filebeat-7.12.1-x86_64.rpm /tmp
RUN yum install -y /tmp/filebeat-7.12.1-x86_64.rpm vim wget tree lrzsz gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotop && rm -rf /etc/localtime /tmp/filebeat-7.12.1-x86_64.rpm && ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && useradd nginx -u 2088
root@k8s-deploy-01:/opt/Dockerfile/system/centos# ll
total 31852
drwxr-xr-x 2 root root 4096 Aug 13 14:03 ./
drwxr-xr-x 3 root root 4096 Aug 13 14:00 ../
-rw-r--r-- 1 root root 446 Aug 13 14:03 Dockerfile
-rw-r--r-- 1 root root 32600353 Aug 13 14:01 filebeat-7.12.1-x86_64.rpm
#构建镜像
root@k8s-deploy-01:/opt/Dockerfile/system/centos# docker build -t xmtx.harbor.com/k8s-base/centos-base:7.9.2009 .
root@k8s-deploy-01:/opt/Dockerfile/system/centos# docker push xmtx.harbor.com/k8s-base/centos-base:7.9.2009
jdk基础镜像
#
root@k8s-deploy-01:/opt/Dockerfile/web/jdk-1.8.212# ll
total 190464
drwxr-xr-x 2 root root 4096 Aug 13 14:18 ./
drwxr-xr-x 5 root root 4096 Aug 13 14:17 ../
-rw-r--r-- 1 root root 348 Aug 13 14:18 Dockerfile
-rw-r--r-- 1 root root 195013152 Aug 13 14:02 jdk-8u212-linux-x64.tar.gz
-rw-r--r-- 1 root root 2105 Aug 13 14:02 profile
#profile文件加入jdk环境变量
root@k8s-deploy-01:/opt/Dockerfile/web/jdk-1.8.212# cat profile
export JAVA_HOME=/usr/local/jdk
export TOMCAT_HOME=/apps/tomcat
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$TOMCAT_HOME/bin:$PATH
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
#Dockerfile文件
root@k8s-deploy-01:/opt/Dockerfile/web/jdk-1.8.212# cat Dockerfile
#JDK基础镜像
FROM xmtx.harbor.com/k8s-base/centos-base:7.9.2009
MAINTAINER xmtx
ADD jdk-8u212-linux-x64.tar.gz /usr/local/src/
RUN ln -sv /usr/local/src/jdk1.8.0_212 /usr/local/jdk
ADD profile /etc/profile
ENV JAVA_HOME /usr/local/jdk
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/:$JRE_HOME/lib/
ENV PATH $PATH:$JAVA_HOME/bin
#构建镜像
root@k8s-deploy-01:/opt/Dockerfile/web/jdk-1.8.212# docker build -t xmtx.harbor.com/k8s-base/jdk-base:v8.212 .
root@k8s-deploy-01:/opt/Dockerfile/web/jdk-1.8.212# docker push xmtx.harbor.com/k8s-base/jdk-base:v8.212
在JDK基础镜像上构建tomcat基础镜像
root@k8s-deploy-01:/opt/Dockerfile/web/tomcat-base-8.5.43# ll
total 9504
drwxr-xr-x 2 root root 4096 Aug 13 14:24 ./
drwxr-xr-x 5 root root 4096 Aug 13 14:23 ../
-rw-r--r-- 1 root root 9717059 Aug 13 14:02 apache-tomcat-8.5.43.tar.gz
-rw-r--r-- 1 root root 308 Aug 13 14:24 Dockerfile
#Dockerfile 文件
root@k8s-deploy-01:/opt/Dockerfile/web/tomcat-base-8.5.43# cat Dockerfile
#Tomcat 8.5.43基础镜像
FROM xmtx.harbor.com/k8s-base/jdk-base:v8.212
MAINTAINER xmtx
RUN mkdir /apps /data/tomcat/webapps /data/tomcat/logs -pv
ADD apache-tomcat-8.5.43.tar.gz /apps
RUN useradd tomcat -u 2050 && ln -sv /apps/apache-tomcat-8.5.43 /apps/tomcat && chown -R tomcat.tomcat /apps /data -R
#构建镜像
root@k8s-deploy-01:/opt/Dockerfile/web/tomcat-base-8.5.43# docker build -t xmtx.harbor.com/k8s-base/tomcat-base:v8.5.43 .
root@k8s-deploy-01:/opt/Dockerfile/web/tomcat-base-8.5.43# docker push xmtx.harbor.com/k8s-base/tomcat-base:v8.5.43
构建tomcat业务镜像
root@k8s-deploy-01:/opt/Dockerfile/apps/tomcat-app1# ll
total 56
drwxr-xr-x 2 root root 4096 Aug 13 14:35 ./
drwxr-xr-x 3 root root 4096 Aug 13 14:31 ../
-rw-r--r-- 1 root root 135 Aug 13 14:32 app1.tar.gz
-rwxr-xr-x 1 root root 23611 Aug 13 14:31 catalina.sh*
-rw-r--r-- 1 root root 349 Aug 13 14:33 Dockerfile
-rwxr-xr-x 1 root root 82 Aug 13 14:35 run_tomcat.sh*
-rw-r--r-- 1 root root 6462 Aug 13 14:31 server.xml
#Dockerfile文件
root@k8s-deploy-01:/opt/Dockerfile/apps/tomcat-app1# cat Dockerfile
#tomcat web1
FROM xmtx.harbor.com/k8s-base/tomcat-base:v8.5.43
ADD catalina.sh /apps/tomcat/bin/catalina.sh
ADD server.xml /apps/tomcat/conf/server.xml
ADD app1.tar.gz /data/tomcat/webapps/myapp/
ADD run_tomcat.sh /apps/tomcat/bin/run_tomcat.sh
RUN chown -R nginx.nginx /data/ /apps/
EXPOSE 8080 8443
CMD ["/apps/tomcat/bin/run_tomcat.sh"]
#tomcat启动脚本
root@k8s-deploy-01:/opt/Dockerfile/apps/tomcat-app1# cat run_tomcat.sh
#!/bin/bash
su - nginx -c "/apps/tomcat/bin/catalina.sh start"
tail -f /etc/hosts
#构建镜像
root@k8s-deploy-01:/opt/Dockerfile/apps/tomcat-app1# docker build -t xmtx.harbor.com/k8s-base/tomcat-app1:v1 .
root@k8s-deploy-01:/opt/Dockerfile/apps/tomcat-app1# docker push xmtx.harbor.com/k8s-base/tomcat-app1:v1
测试tomcat业务镜像
root@k8s-deploy-01:/opt/Dockerfile/apps/tomcat-app1# docker run -d -p 8080:8080 xmtx.harbor.com/k8s-base/tomcat-app1:v1
root@k8s-deploy-01:/opt/Dockerfile/apps/tomcat-app1# curl http://172.31.3.141:8080/myapp/
tomcat app1
使用k8s创建资源
root@k8s-master-01:/opt/yaml/project/tomcat# cat tomcat.yaml
kind: Deployment
#apiVersion: extensions/v1beta1
apiVersion: apps/v1
metadata:
labels:
app: tomcat-app1-deployment-label
name: tomcat-app1-deployment
namespace: myserver
spec:
replicas: 1
selector:
matchLabels:
app: tomcat-app1-selector
template:
metadata:
labels:
app: tomcat-app1-selector
spec:
containers:
- name: tomcat-app1-container
image: xmtx.harbor.com/k8s-base/tomcat-app1:v1
#command: ["/apps/tomcat/bin/run_tomcat.sh"]
imagePullPolicy: IfNotPresent
#imagePullPolicy: Always
ports:
- containerPort: 8080
protocol: TCP
name: http
env:
- name: "password"
value: "123456"
- name: "age"
value: "18"
volumeMounts:
- name: images
mountPath: /usr/local/nginx/html/webapp/images
readOnly: false
- name: static
mountPath: /usr/local/nginx/html/webapp/static
readOnly: false
volumes:
- name: images
nfs:
server: 172.31.3.140
path: /opt/nfs/tomcat/images
- name: static
nfs:
server: 172.31.3.140
path: /opt/nfs/tomcat/static
---
kind: Service
apiVersion: v1
metadata:
labels:
app: tomcat-app1-service-label
name: tomcat-app1-service
namespace: myserver
spec:
#type: NodePort
ports:
- name: http
port: 80
protocol: TCP
targetPort: 8080
#nodePort: 30880
selector:
app: tomcat-app1-selector
root@k8s-master-01:/opt/yaml/project/tomcat# kubectl apply -f tomcat.yaml
root@k8s-master-01:/opt/yaml/project/tomcat# kubectl get service -n myserver
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
tomcat-app1-service ClusterIP 10.100.55.3 <none> 80/TCP 82s
构建nginx业务镜像与资源
构建nginx基础镜像
#Dockerfile
root@k8s-deploy-01:/opt/Dockerfile/web/nginx-base# cat Dockerfile
#Nginx Base Image
FROM xmtx.harbor.com/k8s-base/centos-base:7.9.2009
MAINTAINER xmtx
RUN yum install -y vim wget tree lrzsz gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel iproute net-tools iotop
ADD nginx-1.22.0.tar.gz /usr/local/src/
RUN cd /usr/local/src/nginx-1.22.0 && ./configure && make && make install && ln -sv /usr/local/nginx/sbin/nginx /usr/sbin/nginx &&rm -rf /usr/local/src/nginx-1.22.0.tar.gz
#构建
root@k8s-deploy-01:/opt/Dockerfile/web/nginx-base# docker build -t xmtx.harbor.com/k8s-base/nginx-base:v1.22.0 .
root@k8s-deploy-01:/opt/Dockerfile/web/nginx-base# docker push xmtx.harbor.com/k8s-base/nginx-base:v1.22.0
构建nginx业务镜像
#Dockerfile
root@k8s-deploy-01:/opt/Dockerfile/apps/nginx# cat Dockerfile
#Nginx 1.22.0
FROM xmtx.harbor.com/k8s-base/nginx-base:v1.22.0
ADD nginx.conf /usr/local/nginx/conf/nginx.conf
ADD app1.tar.gz /usr/local/nginx/html/webapp/
ADD index.html /usr/local/nginx/html/index.html
#静态资源挂载路径
RUN mkdir -p /usr/local/nginx/html/webapp/static /usr/local/nginx/html/webapp/images
EXPOSE 80 443
CMD ["nginx"]
#构建
root@k8s-deploy-01:/opt/Dockerfile/apps/nginx# docker build -t xmtx.harbor.com/k8s-base/nginx-web1:v1 .
root@k8s-deploy-01:/opt/Dockerfile/apps/nginx# docker push xmtx.harbor.com/k8s-base/nginx-web1:v1
使用k8s创建资源
root@k8s-master-01:/opt/yaml/project/nginx# cat nginx.yaml
kind: Deployment
apiVersion: apps/v1
metadata:
labels:
app: nginx-deployment-label
name: nginx-deployment
namespace: myserver
spec:
replicas: 1
selector:
matchLabels:
app: nginx-selector
template:
metadata:
labels:
app: nginx-selector
spec:
containers:
- name: nginx-container
image: xmtx.harbor.com/k8s-base/nginx-web1:v1
#command: ["/apps/tomcat/bin/run_tomcat.sh"]
#imagePullPolicy: IfNotPresent
imagePullPolicy: Always
ports:
- containerPort: 80
protocol: TCP
name: http
- containerPort: 443
protocol: TCP
name: https
env:
- name: "password"
value: "123456"
- name: "age"
value: "20"
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 500m
memory: 256Mi
volumeMounts:
- name: magedu-images
mountPath: /usr/local/nginx/html/webapp/images
readOnly: false
- name: magedu-static
mountPath: /usr/local/nginx/html/webapp/static
readOnly: false
volumes:
- name: magedu-images
nfs:
server: 172.31.3.140
path: /opt/nfs/tomcat/images
- name: magedu-static
nfs:
server: 172.31.3.140
path: /opt/nfs/tomcat/static
---
kind: Service
apiVersion: v1
metadata:
labels:
app: nginx-service-label
name: nginx-service
namespace: myserver
spec:
type: NodePort
ports:
- name: http
port: 80
protocol: TCP
targetPort: 80
nodePort: 30090
- name: https
port: 443
protocol: TCP
targetPort: 443
nodePort: 30091
selector:
app: nginx-selector
测试:
nginx前端页面

通过nginx访问tomcat前端页面

访问nfs共享文件


浙公网安备 33010602011771号