基于docker-compose编排部署微服务快速开发框架

1. 规划节点

节点规划,见表1。

表1 节点规划

IP主机名节点
10.24.2.10masterdocker-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/proxy

To 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: root
    restart: always
    container_name: pig-mysql
    image: pig-mysql:v1.0
    ports:
      - 3306:3306
    links:
      - pig-service:pig-register
  pig-redis:
    image: pig-redis:v1.0
    ports:
      - 6379:6379
    restart: always
    container_name: pig-redis
    hostname: pig-redis
    links:
      - pig-service:pig-register
  pig-service:
    ports:
      - 8848:8848
      - 9999:9999
    restart: always
    container_name: pig-service
    hostname: pig-service
    image: pig-service:v1.0
    extra_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.1
    stdin_open: true
    tty: true
    privileged: true
  pig-ui:
    restart: always
    container_name: pig-ui
    image: pig-ui:v1.0
    ports:
      - 8888:80
    links:
      - 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,如图所示:

wKggBmIe0VWAIzYwAADtytL0tcI320

图1

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

wKggBmIe0ViAWMc_AACqo5KHjWw552

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/902214.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

渗透测试-百日筑基—SQL注入篇时间注入绕过HTTP数据编码绕过—下

day8-渗透测试sql注入篇&时间注入&绕过&HTTP数据编码绕过 一、时间注入 SQL注入时间注入(也称为延时注入)是SQL注入攻击的一种特殊形式,它属于盲注(Blind SQL Injection)的一种。在盲注中,攻击…

模型评估:Accuracy、Precision、Recall、F1、ROC曲线、AUC、PR曲线

Accuracy & Precision & Recall & F1 准确率 Accuracy A c c u r a c y T T T F A L L Accuracy \frac{TT TF}{ALL} AccuracyALLTTTF​ 1.分类器到底分对了多少? 精确率 Precision 2.返回的图片中正确的有多少? 召回率 / 查全率 …

了解光耦合器输入输出关系---腾恩科技

光耦合器,也称为光隔离器,是电子电路中必不可少的元件,主要用于在隔离部分之间传输信号,同时防止电噪声或高压影响敏感元件。其独特的设计使它们能够在没有直接电接触的情况下,弥合不同电压域之间的差距。在本文中&…

解决docker拉取readeck镜像报Error response from daemon: toomanyrequests问题

readeck 是一个内容中心,目前已支持中文翻译 这是本地化部署后的效果: 原命令为: docker run --rm -ti -p 8000:8000 -v readeck-data:/readeck codeberg.org/readeck/readeck:latest Unable to find image codeberg.org/readeck/readeck:la…

LeetCode 热题 100之普通数组

1.最大子数组和 思路分析:这个问题可以通过动态规划来解决,我们可以使用Kadane’s Algorithm(卡登算法)来找到具有最大和的连续子数组。 Kadane’s Algorithm 的核心思想是利用一个变量存储当前的累加和 currentSum,并…

【高中生讲机器学习】22. 信息论基础:信息熵、交叉熵、相对熵

创建时间:2024-10-16 首发时间:2024-10-24 最后编辑时间:2024-10-24 作者:Geeker_LStar FIRST OF ALL!!! 2024.10.24!! 1024 快乐!!! 你好呀~这里是 Geeker_LStar 的人工…

IDEA初探:深入理解 Structure 功能

一、Structure - 类视图 Structure 是 IDEA 中的一个视图工具,它提供了对当前文件中结构元素的快速访问。通过 Structure,我们可以方便地查看和导航到代码中的各个部分,从而提高代码编辑和浏览的效率。 1.1 基本概念 Structure 视图以树形结…

Spring Boot:植物健康监测的智能先锋

摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了植物健康系统的开发全过程。通过分析植物健康系统管理的不足,创建了一个计算机管理植物健康系统的方案。文章介绍了植物健康系统的系统分析部分&…

一文带你搞懂RabbitMQ 如何保证消息不丢失

RabbitMQ使用场景: 异步发送(验证码、短信、邮件)MySQL和Redis,ES之间的数据同步分布式事务削峰填谷 什么情况下消息容易丢失: 消息未到达交换机消息未到达队列队列中消息丢失消费者未接收到消息 解决消息丢失的方法…

python查询并安装项目所依赖的所有包

引言 如果需要进行代码的移植,肯定少不了在另一台pc或者服务器上进行环境的搭建,那么首先是要知道在已有的工程的代码中用到了哪些包,此时,如果是用人工去一个一个的代码文件中去查看调用了哪些包,这个工作甚是繁琐。…

js面试问题笔记(一)

一.热门js面试 1.简述同步和异步的区别? 同步: 浏览器访问服务器请求,用户看到页面刷新 ,重新发请求,等请求完,页面刷新,新内容出现,用户看到新内容,进行下一步操作 异步: 浏览器访问服务器请求,用户正常操作,浏览器后端进行请求,等请求完,页面不刷新,新内容也会出现,用户看到…

【HarmonyOS Next】原生沉浸式界面

背景 在实际项目中,为了软件使用整体色调看起来统一,一般顶部和底部的颜色需要铺满整个手机屏幕。因此,这篇帖子是介绍设置的方法,也是应用沉浸式效果。如下图:底部的绿色延伸到上面的状态栏和下面的导航栏 UI 在鸿蒙…

Grid View 网格视图

GoTo DevExpress Data Grid 数据网格 Grid View 网格视图 GridView 是默认的数据网格视图,它以传统的表格格式显示数据。View 将数据源记录呈现为行,将数据源字段呈现为列。数据值显示在各个单元格中。 以下文档包含有关此表格布局的主要元素的深入信…

多线程——线程安全的集合类

目录 前言 一、多线程环境使用 ArrayList 1.进行加锁 2.使用 SynchronizedList 类 3.使用 CopyOnWriteArrayList 类 二、多线程环境使用队列 1.进行加锁 2.使用阻塞队列 三、多线程环境使用哈希表 1.Hashtable 2.ConcurrentHashMap (1)缩小锁…

vue文件转AST,并恢复成vue文件(适用于antdv版本升级)

vue文件转AST,并恢复成vue文件---antdvV3升级V4 vue文件转AST,重新转回原文件过程如何获取项目路径读取项目文件,判断文件类型分别获取vue文件 template js(vue2和vue3)处理vue 文件template部分处理vue script部分uti…

【线下+线上会议|国内外双会场】2024年第四届数字化社会与智能系统国际学术会议(DSInS 2024)-悉尼/郑州双会场

2024年第四届数字化社会与智能系统国际学术会议(DSInS 2024)-悉尼/郑州双会场 2024 4th International Conference on Digital Society and Intelligent Systems 会议官网:www.dsins.org 2024 4th International Conference on Digital Soc…

龙迅#LT89101 适用于 MIPI DSI/CSI摄像头和 LVDS 中继信号延长功能,分辨率可支持 1080P@60HZ!

1. 描述 Lontium LT89101 是一款高性能 MIPI DSI/CSI-2 和 LVDS 中继器,用于汽车系统应用的移动显示或摄像头信号整形。 LT89101采用先进的 CMOS 工艺制造,并采用小外形 7.5mm x 7.5mm QFN64 封装。该封装符合 RoHS 标准,额定工作温度范围为 …

MySQL8.0.40编译安装

近期MySQL发布了8.0.40版本,与之前的版本相比,部分依赖包发生了变化,因此重新编译一版,也便于大家参考。 1. 下载源码 选择对应的版本、选择源码、操作系统 如果没有登录或者没有MySQL官网账号,可以选择只下载 2. 进…

element 按钮变形 el-button样式异常

什么都没动,element UI的按钮变形了,莫名其妙,连官网的也变形了,换了其它浏览器又正常, 难道这是element UI的问题?NO,是浏览器的插件影响到了!去扩展插件里面一个个关闭扩展&#x…

MySql中的锁的分类

锁的分类 MySQL锁可以按模式分类为:乐观锁与悲观锁。按粒度分可以分为全局锁、表级锁、页级锁、行级锁。按属性可以分为:共享锁、排它锁。按状态分为:意向共享锁、意向排它锁。按算法分为:间隙锁、临键锁、记录锁。 二、全局锁、表…