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

数据结构中的堆(Heap)
堆(Heap)是计算机科学中一类特殊的数据结构,在计算机科学领域中扮演着至关重要的角色。以下是对堆的深入了解,包括其定义、特性、类型、底层实现原理以及广泛的应用场景。 一、堆的定义与特性 堆通常被看作是一棵完全二叉树的数…...

Linux误删文件找回
前言 公司要迁移文件服务器,100G文件夹执行了mv操作,由于网络都懂Shell卡死导致命令执行中途停止了。一看目标文件夹才10G的内容,赶紧去源文件夹查看~~~不料空空如也 完蛋,咋整,出事了,有备份吗?…...

深入计算机语言之C++:类与对象(中)
🔑🔑博客主页:阿客不是客 🍓🍓系列专栏:从C语言到C语言的渐深学习 欢迎来到泊舟小课堂 😘博客制作不易欢迎各位👍点赞⭐收藏➕关注 一、默认成员函数 如果一个类中什么成员都没有&…...

51单片机快速入门之 IIC I2C通信
51单片机快速入门之 IIC 总线通信 协议: 空闲时 SCL/SDA 为高电平SCL高时 SDA下降沿 为开始信号开始信号之后: SCL高电平时 SDA不能变化 , SCL低电平时 SDA才可变 SDA 传数据时 从高到低按位传输 SCL一个脉冲高电平对应一位数据 4.SCL高电平时 SDA上升沿 为停止信号 数…...

腾讯推出ima.copilot智能工作台产品 由混元大模型提供技术支持
腾讯公司近期推出了一款名为ima.copilot(简称ima)的智能工作台产品,它由腾讯混元大模型提供技术支持。这款产品旨在通过其会思考的知识库,为用户开启搜读写的新体验。ima.copilot的核心功能包括知识获取、打造专属知识库以及智能写…...

1024是什么日子
【1024程序员日数字编织梦想的赞歌】 在这个由二进制构建的宇宙里,每一行代码都是通往未来的桥梁,每一位程序员都是这浩瀚数字海洋中的航海家。今天,10月24日,不仅是一个简单的日期,它是属于我们的节日——程序员日&a…...

驱动开发系列20 - Linux Graphics Xorg-server 介绍
一: 概述 X.Org Server 是由 X.Org 基金会管理的 X Window System (X11) 显示服务器的自由开源实现。客户端 X Window System 协议的实现以 X11 库的形式存在,这些库作为与 X 服务器通信的有用 API。有两个主要的 X11 库。第一个库是 Xlib,它是最初的 C 语言 X11 API;…...

晶台推出SOP5封装的高速光耦KLM45X,提供1MBit/s超快速率
KLM452 和 KLM453 器件均由一个红外发射二极管与一个高速光电检测晶体管组成,两者之间光学耦合。光电二极管偏置和输出晶体管集电极的独立连接可以通过减少输入晶体管的基极-集电极电容来使速度比传统的光电晶体管耦合器提高几个数量级。它们采用行业内标准的 5 引脚…...

软物质流变探究:从宏观微观差异,到水凝胶界面特性
大家好!今天我们要探讨的是一篇关于纳米级界面水凝胶粘弹性的研究论文——《Nanoscopic Interfacial Hydrogel Viscoelasticity Revealed from Comparison of Macroscopic and Microscopic Rheology》发表于《Nano Letters》,该研究通过比较宏观和微观流…...

Axure中继器单选、多选和重置
亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! 课程主题:Axure中继器单选、多选和重置 主要内容:根据查询条件,通过单选、多选和重置,从中继器中得到数据 应用场景&…...