- 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"]
- k8s 部署yaml 脚本配置,realize-market-value.yaml
apiVersion: v1 kind: Service metadata:name: $IMG_NAMEnamespace: rz-dtlabels:app: $IMG_NAME spec:type: ClusterIP #NodePortports:- name: tcp-9311-9311port: 9311protocol: TCPtargetPort: 9311#nodePort: 31051 #service对外开放端口selector:app: $IMG_NAME --- apiVersion: apps/v1 kind: Deployment #对象类型 metadata:name: $IMG_NAME #名称namespace: rz-dtlabels:app: $IMG_NAME #标注 spec:replicas: 1 #运行容器的副本数,修改这里可以快速修改分布式节点数量selector:matchLabels:app: $IMG_NAMEtemplate:metadata:labels:app: $IMG_NAMEspec:containers: #docker容器的配置- name: $IMG_NAMEimage: rz-dt-image-server-registry-vpc.cn-shanghai.cr.aliyuncs.com/rz-dt/$IMG_NAME:$IMG_TAG # pull镜像的地址 ip:prot/dir/images:tagimagePullPolicy: Always #pull镜像时机,ports:- containerPort: 9311 #容器对外开放端口,需与springboot配置文件一致volumeMounts:- name: time-configmountPath: /etc/localtimereadOnly: true- name: volume-logsmountPath: /logssubPath: logsresources:limits:cpu: 500mmemory: 1Girequests:cpu: 10mmemory: 50Mi#从私有仓库拉取镜像凭证imagePullSecrets:- name: rz-dt-miyue-vpcvolumes:- name: time-confighostPath:path: /usr/share/zoneinfo/Asia/Shanghai- name: volume-logspersistentVolumeClaim:claimName: rz-dt-nas-volume-claim
- 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=123echo "镜像最新版本提交" 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 -