springcloud+docker+k8s发布安装第三方插件脚本

本文展示了如何使用Dockerfile构建包含第三方依赖的Java应用镜像,包括OpenJDK、Echarts和PhantomJS。接着,配置了Kubernetes的yaml文件用于服务部署,包括设置Service和Deployment,以及容器的资源限制。最后,提到了使用shell脚本进行镜像构建、推送和K8s集群的自动化部署。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. Dockerfile 安装第三方依赖插件软件 ,以及构建镜像
    #基础镜像,如果本地仓库没有,会从远程仓库拉取 openjdk:8
    FROM docker.io/centos:centos7
    #暴露端口
    EXPOSE 9311
    # 避免centos中文乱码
    ENV LANG en_US.utf8
    #容器中创建工作目录
    WORKDIR  /usr/local/plugin
    #容器中创建子目录
    RUN mkdir -p /usr/local/plugin/data &&  mkdir -p /usr/local/plugin/Echart
    
    # 构建容器时 复制解压 echarts phantomjs jdk 安装第三方插件软件 到容器
    ADD jdk-8u202-linux-x64.tar.gz  ./
    ADD echarts-convert.tar.gz  ./
    ADD phantomjs-2.1.1-linux-x86_64.tar.bz2  ./
    
    # 构建容器时 编译后的jar包copy到容器中创建到目录内
    COPY realize-market-value.jar realize-market-value.jar
    #COPY data/  ./data
    
    # 构建容器时 安装phantomjs 依赖系统libfontconfig.so文件
    RUN yum -y install fontconfig-devel
    # 构建容器时 安装phantomjs 生成echart图片中文字体支持
    RUN yum groupinstall 'fonts' -y
    #配置环境变量
    ENV JAVA_HOME=./jdk1.8.0_202
    ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    ENV PATH=$JAVA_HOME/bin:$PATH
    
    # 构建容器时 指定容器时区
    RUN rm -f /etc/localtime \
    && ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo "Asia/Shanghai" > /etc/timezone
    # 启动容器时 要执行的命令
    ENTRYPOINT ["java","-jar","-Dspring.profiles.active=server"]
    # 启动容器时 启动 tomcat
    CMD ["/usr/local/tomcat/apache-tomcat-8.5.27/bin/catalina.sh", "run"]
    # 启动容器时 CMD的参数可以在镜像运行的时候被替换掉,并且成为ENTRYPOINT命令的参数
    CMD ["realize-market-value.jar"]
    

  2.  k8s 部署yaml 脚本配置,realize-market-value.yaml
    apiVersion: v1
    kind: Service
    metadata:
      name: $IMG_NAME
      namespace: rz-dt
      labels:
        app: $IMG_NAME
    spec:
      type: ClusterIP #NodePort
      ports:
      - name: tcp-9311-9311
        port: 9311
        protocol: TCP
        targetPort: 9311
        #nodePort: 31051 #service对外开放端口
      selector:
        app: $IMG_NAME
    ---
    apiVersion: apps/v1
    kind: Deployment #对象类型
    metadata:
      name: $IMG_NAME #名称
      namespace: rz-dt
      labels:
        app: $IMG_NAME #标注
    spec:
      replicas: 1 #运行容器的副本数,修改这里可以快速修改分布式节点数量
      selector:
        matchLabels:
          app: $IMG_NAME
      template:
        metadata:
          labels:
            app: $IMG_NAME
        spec:
          containers: #docker容器的配置
            - name: $IMG_NAME
              image: rz-dt-image-server-registry-vpc.cn-shanghai.cr.aliyuncs.com/rz-dt/$IMG_NAME:$IMG_TAG # pull镜像的地址 ip:prot/dir/images:tag
              imagePullPolicy: Always #pull镜像时机,
              ports:
                - containerPort: 9311 #容器对外开放端口,需与springboot配置文件一致
              volumeMounts:
                - name: time-config
                  mountPath: /etc/localtime
                  readOnly: true
                - name: volume-logs
                  mountPath: /logs
                  subPath: logs
              resources:
                limits:
                  cpu: 500m
                  memory: 1Gi
                requests:
                  cpu: 10m
                  memory: 50Mi
          #从私有仓库拉取镜像凭证
          imagePullSecrets:
            - name: rz-dt-miyue-vpc
          volumes:
            - name: time-config
              hostPath:
                path: /usr/share/zoneinfo/Asia/Shanghai
            - name: volume-logs
              persistentVolumeClaim:
                claimName: rz-dt-nas-volume-claim
    

  3. centos配置kubectl客户端连接k8s集群,执行,sh test.sh测试环境发布k8s,sh real.sh生产环境 
    echo "开始制作镜像..."
    image_name=realize-market-value
    image_tag=`date +%Y-%m-%d-%H-%M-%S` #_%H%M
    echo "当前时间版本号:$image_tag"
    docker build -t ${image_name}:${image_tag} .
    echo "制作镜像成功!"
    
    echo "登录"
    sudo docker login --username=aliyun03985131512 rz-dt-image-server-registry-vpc.cn-shanghai.cr.aliyuncs.com --password=123
    
    echo "镜像最新版本提交"
    docker tag ${image_name}:${image_tag} rz-dt-image-server-registry-vpc.cn-shanghai.cr.aliyuncs.com/rz-dt/${image_name}:${image_tag}
    docker push rz-dt-image-server-registry-vpc.cn-shanghai.cr.aliyuncs.com/rz-dt/${image_name}:${image_tag}
    
    echo "k8s一键部署"
    export IMG_TAG=${image_tag}
    export IMG_NAME=${image_name}
    envsubst < ${image_name}.yaml | kubectl --kubeconfig ~/.kube-rz/config apply -f -
    
    
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值