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共享文件

posted @ 2022-08-13 17:30  xmtx97  阅读(54)  评论(0)    收藏  举报