基于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博客电网论文源…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...

无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...