基于docker-compose编排部署微服务快速开发框架
1. 规划节点
节点规划,见表1。
表1 节点规划
| IP | 主机名 | 节点 | 
|---|---|---|
| 10.24.2.10 | master | docker-compose节点 | 
2. 基础准备
Docker和Docker Compose已安装完成,将提供的软件包Pig.tar.gz上传至master节点/root目录下并解压。
案例实施
1. 基础环境准备
(1)导入软件包
下载并解压软件包:
[root@master ~]# wget http://mirrors.douxuedu.com/competition/Pig.tar.gz
[root@master ~]# tar -xf Pig.tar.gz
[root@master ~]# ll Pig
total 206752
-rw------- 1 root root 211696640 Jan 12 17:24 CentOS_7.9.2009.tar
drwxr-xr-x 2 root root        85 Jan  5 08:58 mysql
drwxr-xr-x 3 root root        37 Jan  5 08:56 nginx
drwxr-xr-x 2 root root        97 Jan  5 08:56 service
drwxr-xr-x 3 root root     12288 Jan  5 08:56 yum
导入CentOS:7.9.2009镜像:
[root@master ~]# docker load -i Pig/CentOS_7.9.2009.tar 
Loaded image: centos:centos7.9.2009
(2)启动Kubernetes集群
初始化Kubernetes集群:
[root@master ~]# init-cluster
查看集群状态:
[root@master ~]# kubectl cluster-info
Kubernetes control plane is running at https://apiserver.cluster.local:6443
CoreDNS is running at https://apiserver.cluster.local:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxyTo further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
2. 容器化部署MariaDB
(1)编写Dockerfile
编写init.sh脚本:
[root@master ~]# cd Pig/
[root@master Pig]# vi mysql_init.sh 
#!/bin/bash
mysql_install_db --user=root
mysqld_safe --user=root &
sleep 8
mysqladmin -u root password 'root'
mysql -uroot -proot -e "grant all on *.* to 'root'@'%' identified by 'root';flush privileges;"
mysql -uroot -proot -e "source /opt/pig.sql;source /opt/pig_codegen.sql;source /opt/pig_config.sql;source /opt/pig_job.sql;"
编写yum源:
[root@master Pig]# vi local.repo
[pig]
name=pig
baseurl=file:///root/yum
gpgcheck=0
enabled=1
编写Dockerfile文件:
[root@master Pig]# vi Dockerfile-mariadb 
FROM centos:centos7.9.2009
MAINTAINER Chinaskills
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
COPY yum /root/yum
ENV LC_ALL en_US.UTF-8
RUN yum -y install mariadb-server
COPY mysql /opt/
COPY mysql_init.sh /opt/
RUN bash /opt/mysql_init.sh
EXPOSE 3306
CMD ["mysqld_safe","--user=root"]
(2)构建镜像
构建镜像:
[root@master Pig]# docker build -t pig-mysql:v1.0 -f Dockerfile-mariadb .
Sending build context to Docker daemon  890.9MB
Step 1/12 : FROM centos:centos7.9.2009---> eeb6ee3f44bd
Step 2/12 : MAINTAINER Chinaskills---> Using cache---> 815a4a5f2242
Step 3/12 : RUN rm -rf /etc/yum.repos.d/*---> Using cache---> 6afa0315cb5b
Step 4/12 : COPY local.repo /etc/yum.repos.d/---> Using cache---> 4f07e082cc00
Step 5/12 : COPY yum /root/yum---> Using cache---> 7042f9e7f455
Step 6/12 : ENV LC_ALL en_US.UTF-8---> Using cache---> df0aa8985d61
Step 7/12 : RUN yum -y install mariadb-server---> Using cache---> 9ad09d62d373
Step 8/12 : COPY mysql /opt/---> Using cache---> 75adb0e3bbb0
Step 9/12 : COPY mysql_init.sh /opt/---> Using cache---> 3cc10e8ca0cc
Step 10/12 : RUN bash /opt/mysql_init.sh---> Using cache---> f7fe9f822cc3
Step 11/12 : EXPOSE 3306---> Using cache---> 70f2274acbeb
Step 12/12 : CMD ["mysqld_safe","--user=root"]---> Using cache---> f088fb18dedf
Successfully built f088fb18dedf
Successfully tagged pig-mysql:v1.0
3. 容器化部署Redis
(1)编写Dockerfile
编写Dockerfile文件:
[root@master Pig]# vi Dockerfile-redis
FROM centos:centos7.9.2009
MAINTAINER Chinaskills
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
COPY yum /root/yum
RUN yum -y install redis
RUN sed -i 's/127.0.0.1/0.0.0.0/g' /etc/redis.conf && \sed -i 's/protected-mode yes/protected-mode no/g' /etc/redis.conf
EXPOSE 6379
CMD ["/usr/bin/redis-server","/etc/redis.conf"]
(2)构建镜像
[root@master Pig]# docker build -t pig-redis:v1.0 -f Dockerfile-redis .
Sending build context to Docker daemon  890.9MB
Step 1/9 : FROM centos:centos7.9.2009---> eeb6ee3f44bd
Step 2/9 : MAINTAINER Chinaskills---> Using cache---> 815a4a5f2242
Step 3/9 : RUN rm -rf /etc/yum.repos.d/*---> Using cache---> 6afa0315cb5b
Step 4/9 : COPY local.repo /etc/yum.repos.d/---> Using cache---> 4f07e082cc00
Step 5/9 : COPY yum /root/yum---> Using cache---> 7042f9e7f455
Step 6/9 : RUN yum -y install redis---> Using cache---> 2d0b65ca48f0
Step 7/9 : RUN sed -i 's/127.0.0.1/0.0.0.0/g' /etc/redis.conf &&     sed -i 's/protected-mode yes/protected-mode no/g' /etc/redis.conf---> Using cache---> fcb84f12d0cf
Step 8/9 : EXPOSE 6379---> Using cache---> 37ac24f680d6
Step 9/9 : CMD ["/usr/bin/redis-server","/etc/redis.conf"]---> Using cache---> ee5f16785493
Successfully built ee5f16785493
Successfully tagged pig-redis:v1.0
4. 容器化部署Pig
(1)编写Dockerfile
编写启动脚本:
[root@master Pig]# vi pig_init.sh
#!/bin/bash
sleep 20
nohup java -jar /root/pig-register.jar  $JAVA_OPTS  >/dev/null 2>&1 &
sleep 20
nohup java -jar /root/pig-gateway.jar  $JAVA_OPTS >/dev/null 2>&1 &
sleep 20
nohup java -jar /root/pig-auth.jar  $JAVA_OPTS >/dev/null 2>&1 &
sleep 20
nohup java -jar /root/pig-upms-biz.jar  $JAVA_OPTS >/dev/null 2>&1
编写Dockerfile文件:
[root@master Pig]# vi Dockerfile-pig 
FROM centos:centos7.9.2009
MAINTAINER Chinaskills
COPY service /root
ADD yum /root/yum
RUN rm -rfv /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/local.repo
RUN yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
COPY pig_init.sh /root
RUN chmod +x /root/pig_init.sh
EXPOSE 8848 9999 3000 4000
CMD ["/bin/bash","/root/pig_init.sh"]
(2)构建镜像
[root@master Pig]# docker build -t pig-service:v1.0 -f Dockerfile-pig .
Sending build context to Docker daemon  890.9MB
Step 1/11 : FROM centos:centos7.9.2009---> eeb6ee3f44bd
Step 2/11 : MAINTAINER Chinaskills---> Using cache---> 24a91af3317f
Step 3/11 : COPY service /root---> Using cache---> d5fe8134b1ed
Step 4/11 : ADD yum /root/yum---> Using cache---> 41cc1285cd49
Step 5/11 : RUN rm -rfv /etc/yum.repos.d/*---> Using cache---> 2b8dc2f278e0
Step 6/11 : COPY local.repo /etc/yum.repos.d/local.repo---> Using cache---> a61d69862c5c
Step 7/11 : RUN yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel---> Using cache---> 92ccadeb64b6
Step 8/11 : COPY pig_init.sh /root---> Using cache---> 1ab999a18ce1
Step 9/11 : RUN chmod +x /root/pig_init.sh---> Using cache---> dff4a7c6bba7
Step 10/11 : EXPOSE 8848 9999 3000 4000---> Using cache---> d4e37e3952af
Step 11/11 : CMD ["/bin/bash","/root/pig_init.sh"]---> Using cache---> acb3d73b810a
Successfully built acb3d73b810a
Successfully tagged pig-service:v1.0
5. 容器化部署前端服务
(1)编写Dockerfile
编写Dockerfile:
[root@master Pig]# vi Dockerfile-nginx 
FROM centos:centos7.9.2009
MAINTAINER Chinaskills
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
COPY yum /root/yum
RUN yum -y install nginx
COPY nginx/dist /data
ADD nginx/pig-ui.conf /etc/nginx/conf.d/
RUN /bin/bash -c 'echo init ok'
EXPOSE 80
CMD ["nginx","-g","daemon off;"]
(2)构建镜像
构建镜像:
[root@master Pig]# docker build -t pig-ui:v1.0 -f Dockerfile-nginx .
Sending build context to Docker daemon  890.9MB
Step 1/11 : FROM centos:centos7.9.2009---> eeb6ee3f44bd
Step 2/11 : MAINTAINER Chinaskills---> Using cache---> 815a4a5f2242
Step 3/11 : RUN rm -rf /etc/yum.repos.d/*---> Using cache---> 6afa0315cb5b
Step 4/11 : COPY local.repo /etc/yum.repos.d/---> Using cache---> 4f07e082cc00
Step 5/11 : COPY yum /root/yum---> Using cache---> 7042f9e7f455
Step 6/11 : RUN yum -y install nginx---> Using cache---> b6ee699b51ed
Step 7/11 : COPY nginx/dist /data---> Using cache---> 04b6d05ba642
Step 8/11 : ADD nginx/pig-ui.conf /etc/nginx/conf.d/---> Using cache---> 661b56e2cff6
Step 9/11 : RUN /bin/bash -c 'echo init ok'---> Using cache---> 0d98b6d8a81c
Step 10/11 : EXPOSE 80---> Using cache---> b1f5ecafc494
Step 11/11 : CMD ["nginx","-g","daemon off;"]---> Using cache---> c20fc29b9daa
Successfully built c20fc29b9daa
Successfully tagged pig-ui:v1.0
6. 编排部署Pig快速开发平台
(1)编写docker-compose.yaml
编写docker-compose.yaml编排文件:
[root@master Pig]# vi docker-compose.yaml
version: '2'
services:pig-mysql:environment:MYSQL_ROOT_PASSWORD: rootrestart: alwayscontainer_name: pig-mysqlimage: pig-mysql:v1.0ports:- 3306:3306links:- pig-service:pig-registerpig-redis:image: pig-redis:v1.0ports:- 6379:6379restart: alwayscontainer_name: pig-redishostname: pig-redislinks:- pig-service:pig-registerpig-service:ports:- 8848:8848- 9999:9999restart: alwayscontainer_name: pig-servicehostname: pig-serviceimage: pig-service:v1.0extra_hosts:- pig-register:127.0.0.1- pig-upms:127.0.0.1- pig-gateway:127.0.0.1- pig-auth:127.0.0.1- pig-hou:127.0.0.1stdin_open: truetty: trueprivileged: truepig-ui:restart: alwayscontainer_name: pig-uiimage: pig-ui:v1.0ports:- 8888:80links:- pig-service:pig-gateway
(2)部署服务
部署服务
[root@master Pig]# docker-compose up -d
[+] Running 5/5
⠿ Network  pig_default  Created                                       0.1s
⠿ Container  pig-service  Started                                       0.7s
⠿ Container  pig-mysql   Started                                       1.5s
⠿ Container  pig-redis    Started                                       1.7s
⠿ Container  pig-ui      Started                                       1.8s
查看服务:
[root@master Pig]# docker-compose ps
NAME                COMMAND                  SERVICE             STATUS              PORTS
pig-mysql           "mysqld_safe --user=…"   pig-mysql           running             0.0.0.0:3306->3306/tcp, :::3306->3306/tcp
pig-redis           "/usr/bin/redis-serv…"   pig-redis           running             0.0.0.0:6379->6379/tcp, :::6379->6379/tcp
pig-service         "/bin/bash /root/pig…"   pig-service         running             0.0.0.0:8848->8848/tcp, 0.0.0.0:9999->9999/tcp, :::8848->8848/tcp, :::9999->9999/tcp
pig-ui              "nginx -g 'daemon of…"   pig-ui              running             0.0.0.0:8888->80/tcp, :::8888->80/tcp
等待3分钟左右,在浏览器上通过http://master_IP:8888访问Pig,如图所示:

图1
使用默认的账号和密码,输入验证码,点击登录。如图所示:

相关文章:
 
基于docker-compose编排部署微服务快速开发框架
1. 规划节点 节点规划,见表1。 表1 节点规划 IP主机名节点10.24.2.10masterdocker-compose节点 2. 基础准备 Docker和Docker Compose已安装完成,将提供的软件包Pig.tar.gz上传至master节点/root目录下并解压。 案例实施 1. 基础环境准备 &#x…...
 
【Java面试——并发编程——相关类和关键字——Day6】
1. Future 1.1 Future类 Future 类是异步思想的典型运用,主要用在一些需要执行耗时任务的场景,避免程序一直原地等待耗时任务执行完成,执行效率太低。具体来说是这样的:当我们执行某一耗时的任务时,可以将这个耗时任…...
Android 两种方式实现类似水波扩散效果
两种方式实现类似水波扩散效果,(相比较而言,自定义view的效果更好点,动画实现起来更方便点。) 自定义view实现动画实现 自定义view实现 思路分析:通过canvas画圆,每次改变圆半径和透明度&…...
 
基于SSM+小程序的垃圾分类管理系统(垃圾2)
👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 基于SSM小程序的垃圾分类管理系统实现了管理员及用户。 1、管理员功能结构图,管理员功能有个人中心,管理员管理,基础数据管理、论坛管理、垃圾信息管理…...
 
微服务网格Istio介绍
微服务网格Istio 介绍服务注册和发现服务度量灰度发布 Istio核心特性断路器互动1:举个生活中的例子解释断路器互动2:服务降级(提高用户体验效果) 超时重试多路由规则 Istio架构istio组件详解PilotEnvoyCitadelGalleyIngressgatewa…...
 
【MySQL】视图与用户管理——MySQL
W...Y的主页 😊 代码仓库分享 💕 目录 视图 基本使用 视图规则和限制 用户管理 用户 用户信息 创建用户 删除用户 修改用户密码 数据库的权限 给用户授权 回收权限 视图 视图是一个虚拟表,其内容由查询定义。同真实的表一样&am…...
 
Go语言中三个输入函数(scanf,scan,scanln)的区别
Go语言中三个输入函数(scanf,scan,scanln)的区别 在 Go 语言中,fmt 包提供了三种输入函数:Scanf、Scan 和 Scanln。这三个函数都是用于从标准输入读取数据并存储到变量中,但是它们在处理输入的方式上有所不同。下面详细解读每个函数的特点和…...
 
uniapp使用html2canvas时,页面内的image元素模糊
不废话很简单只需要将image改成img就行 改之前 改之后 原因可能是因为uniapp里面的image标签做了某种处理...
华为交换机堆叠
堆叠方式 堆叠卡堆叠: 堆叠卡堆叠又可以分为两种情况: 交换机之间通过专用的堆叠插卡ES5D21VST000及专用的堆叠线缆连接。堆叠卡集成到交换机后面板上,交换机通过集成的堆叠端口及专用的堆叠线缆连接。 业务口堆叠: 业务口堆…...
 
Spring Boot框架下中小企业设备管理系统开发
1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理中小企业设备管理系统的相关信息成为必然。…...
 
鸿蒙开发融云demo消息未读数
鸿蒙开发融云demo消息未读数 跟着我一步步搭建带界面的融云demo,这次是要显示未读数,未读数有两个,一个是消息列表的未读数,一个是主页消息tab上的未读数。 一、消息列表的未读数 先看下效果图: 关键代码如下&#…...
非对称加密算法(RSA):原理、应用与代码实现
一、引言 在当今数字化时代,信息安全成为了至关重要的议题。非对称加密算法作为保障信息安全的核心技术之一,在数据加密、数字签名、身份验证等领域发挥着不可或缺的作用。其中,RSA 算法以其可靠性、安全性和广泛的适用性,成为了…...
docker部署SQL审核平台Archery
1、概述 Archery 是一个开源的 SQL 审核平台,专为数据库的 SQL 运维和管理而设计,广泛应用于企业的数据库运维工作中。其主要功能是帮助数据库管理员和开发人员实现 SQL 审核、SQL 执行、在线执行、查询、工单管理、权限控制等数据库管理相关的操作。 Archery 的主要功能包括…...
ceph 删除rbd 锁的命令
文章目录 前言操作步骤 前言 记录一下ceph 删除rbd锁的命令 rbd lock rm poolname/uuid_disk "ID" Locker操作步骤 云主机实例的uuid是:fec52819-3b00-48e1-9f3b-c68c717bd619 # 获取rbd块的信息 rbd info nova/fec52819-3b00-48e1-9f3b-c68c717bd619…...
 
MySQL【知识改变命运】01
库的基本操作语法 1:SQL的简介2:SQL的基本分类3:库的基本操作1:查看库2:创建数据库1:创建一个diayang库2: ⾃定义⼀个数据库名,如果数据库不存则创建,3:查看警告信息4:字符集编码和校验(排序)规…...
苍穹外卖 Maven依赖配置
苍穹外卖所用到的Maven坐标 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apa…...
 
Lucas带你手撕机器学习——SVM支持向量机
#1024程序员节|征文# 支持向量机(SVM)的详细讲解 什么是SVM? 支持向量机(Support Vector Machine,SVM)是一种用于分类和回归的监督学习算法。它的主要任务是从给定的数据中找到一个最佳的决策…...
 
将后端返回的网络url转成blob对象,实现pdf预览
调用e签宝返回的数据是网络链接就很让人头疼,最后想到可以转换成blob对象,便在百度上找到方法,记录一下。 祝大家节日快乐!! 代码在最后!!!! 代码在最后!&a…...
民峰金融智能交易模型的应用与未来趋势
随着科技的进步,金融市场中的智能化交易模式逐渐成为主流。民峰金融在智能交易模型领域不断创新,凭借先进的技术优势,成为了业内的佼佼者。本文将探讨民峰金融如何通过智能交易模型提升市场交易效率,以及未来可能的发展趋势。 一…...
文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑负荷时空迁移的5G基站与配电网协同优化运行 》
本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
 
elementUI点击浏览table所选行数据查看文档
项目场景: table按照要求特定的数据变成按钮可以点击 解决方案: <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...
 
【堆垛策略】设计方法
堆垛策略的设计是积木堆叠系统的核心,直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法,涵盖基础规则、优化算法和容错机制: 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则: 大尺寸/重量积木在下…...
第八部分:阶段项目 6:构建 React 前端应用
现在,是时候将你学到的 React 基础知识付诸实践,构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段,你可以先使用模拟数据,或者如果你的后端 API(阶段项目 5)已经搭建好,可以直接连…...
 
Matlab实现任意伪彩色图像可视化显示
Matlab实现任意伪彩色图像可视化显示 1、灰度原始图像2、RGB彩色原始图像 在科研研究中,如何展示好看的实验结果图像非常重要!!! 1、灰度原始图像 灰度图像每个像素点只有一个数值,代表该点的亮度(或…...
 
Qt的学习(一)
1.什么是Qt Qt特指用来进行桌面应用开发(电脑上写的程序)涉及到的一套技术Qt无法开发网页前端,也不能开发移动应用。 客户端开发的重要任务:编写和用户交互的界面。一般来说和用户交互的界面,有两种典型风格&…...
