阿里云云效流水线自动化部署 ruoyi-cloud 微服务架构

前言

本文章基于 ruoyi-cloud 项目改编。
阿里云云效工作台点击进入,主要使用到代码管理及流水线模块。
主机配置:CentOS 7.9.2009 x86_64
环境配置:安装 docker、docker-compose

# 安装 docker 使用 daocloud 的一键安装脚本
curl -sSL https://get.daocloud.io/docker | sh
# 安装 daocloud 加速器,避免 dockerhub 网络问题
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
# 启动 docker 服务
systemctl start docker
# 安装 docker-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

一、上传项目并进入流水线

在这里插入图片描述

二、新建流水线 - 启动 mysql/redis/nacos

1.新建流水线

在这里插入图片描述

2.流水线源配置

在这里插入图片描述

3.构建配置

在这里插入图片描述

4.部署配置

在这里插入图片描述

# 项目文件夹
BASE_DIR="/home/witbee-cloud"
# 项目包名
PACKAGE_NAME="witbee-cloud.tgz"
echo "创建项目文件夹"
mkdir -p $BASE_DIR
echo "开始解压文件"
tar -zxvf $BASE_DIR/$PACKAGE_NAME -C $BASE_DIR
echo "授权项目文件夹"
chmod -R 777 $BASE_DIR
echo "执行构建脚本"
cd $BASE_DIR/docker
sh deploy.sh base

5.保存并运行

三、新建流水线 - 启动 gateway/auth/system

1.新建流水线(同上)

2.流水线源配置(同上)

3.构建配置

在这里插入图片描述
在这里插入图片描述

4.部署配置(修改部署脚本,其它同上)

# 项目文件夹
BASE_DIR="/home/witbee-cloud"
# 项目包名
PACKAGE_NAME="witbee-cloud.tgz"
echo "开始解压文件"
tar -zxvf $BASE_DIR/$PACKAGE_NAME -C $BASE_DIR
echo "授权项目文件夹"
chmod -R 777 $BASE_DIR
echo "执行构建脚本"
cd $BASE_DIR/docker
sh deploy.sh modules

5.保存并运行

三、新建流水线 - 启动 file/gen/job

1.新建流水线(同上)

2.流水线源配置(同上)

3.构建配置

在这里插入图片描述

4.部署配置(修改部署脚本,其它同上)

# 项目文件夹
BASE_DIR="/home/witbee-cloud"
# 项目包名
PACKAGE_NAME="witbee-cloud.tgz"
echo "开始解压文件"
tar -zxvf $BASE_DIR/$PACKAGE_NAME -C $BASE_DIR
echo "授权项目文件夹"
chmod -R 777 $BASE_DIR
echo "执行构建脚本"
cd $BASE_DIR/docker
sh deploy.sh modulesPlus

5.保存并运行

四、新建流水线 - 启动 nginx

1.新建流水线

在这里插入图片描述

2.流水线源配置(同上)

3.构建配置

在这里插入图片描述
在这里插入图片描述

4.部署配置

在这里插入图片描述

# 项目文件夹
BASE_DIR="/home/witbee-cloud"
# 项目包名
PACKAGE_NAME="witbee-ui.tgz"
echo "开始解压文件"
tar -zxvf $BASE_DIR/$PACKAGE_NAME -C $BASE_DIR/docker/nginx/html/dist
echo "授权项目文件夹"
chmod -R 777 $BASE_DIR
echo "执行构建脚本"
cd $BASE_DIR/docker
docker-compose up -d witbee-nginx

5.保存并运行

总结(附上 docker-compose.yml、deploy.sh 脚本)

docker-compose.yml

version : '3.8'
services:
  witbee-nacos:
    restart: always
    container_name: witbee-nacos
    build:
      context: ./nacos
    environment:
      - MODE=standalone
    volumes:
      - ./nacos/logs/:/home/nacos/logs
      - ./nacos/conf/application.properties:/home/nacos/conf/application.properties
    ports:
      - "8848:8848"
      - "9848:9848"
      - "9849:9849"
    depends_on:
      witbee-mysql:
        condition: service_healthy
  witbee-mysql:
    restart: always
    container_name: witbee-mysql
    build:
      context: ./mysql
    ports:
      - "3306:3306"
    volumes:
      - ./mysql/conf:/etc/mysql/conf.d
      - ./mysql/logs:/logs
      - ./mysql/data:/var/lib/mysql
    command:
      # 将mysql8.0默认密码策略 修改为 原先 策略 (mysql8.0对其默认策略做了更改 会导致密码无法匹配)
      --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
    environment:
      TZ: Asia/Shanghai
      MYSQL_DATABASE: 'ry-cloud'
      MYSQL_ROOT_PASSWORD: password
    healthcheck:
      test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ]
      timeout: 45s
      interval: 10s
      retries: 10
  witbee-redis:
    restart: always
    container_name: witbee-redis
    image: redis:7.0.6
    build:
      context: ./redis
    ports:
      - "6379:6379"
    volumes:
      - ./redis/conf/redis.conf:/home/witbee/redis/redis.conf
      - ./redis/data:/data
    command: redis-server /home/witbee/redis/redis.conf
  witbee-nginx:
    container_name: witbee-nginx
    image: nginx
    build:
      context: ./nginx
    ports:
      - "8000:80"
    volumes:
      - ./nginx/html/dist:/home/witbee/projects/witbee-ui
      - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf
      - ./nginx/logs:/var/log/nginx
      - ./nginx/conf.d:/etc/nginx/conf.d
    depends_on:
      - witbee-gateway
  witbee-gateway:
    restart: always
    container_name: witbee-gateway
    build:
      context: ./witbee/gateway
      dockerfile: dockerfile
    ports:
      - "9000:9000"
    depends_on:
      - witbee-redis
  witbee-auth:
    restart: always
    container_name: witbee-auth
    build:
      context: ./witbee/auth
      dockerfile: dockerfile
    ports:
      - "9200:9200"
    depends_on:
      - witbee-redis
  witbee-modules-system:
    restart: always
    container_name: witbee-modules-system
    build:
      context: ./witbee/modules/system
      dockerfile: dockerfile
    ports:
      - "9201:9201"
    depends_on:
      - witbee-redis
      - witbee-mysql
  witbee-modules-gen:
    restart: always
    container_name: witbee-modules-gen
    build:
      context: ./witbee/modules/gen
      dockerfile: dockerfile
    ports:
      - "9202:9202"
    depends_on:
      - witbee-redis
      - witbee-mysql
  witbee-modules-job:
    restart: always
    container_name: witbee-modules-job
    build:
      context: ./witbee/modules/job
      dockerfile: dockerfile
    ports:
      - "9203:9203"
    depends_on:
      - witbee-redis
      - witbee-mysql
  witbee-modules-file:
    restart: always
    container_name: witbee-modules-file
    build:
      context: ./witbee/modules/file
      dockerfile: dockerfile
    ports:
      - "9300:9300"
    volumes:
    - ./witbee/uploadPath:/home/witbee/uploadPath
  witbee-visual-monitor:
    restart: always
    container_name: witbee-visual-monitor
    build:
      context: ./witbee/visual/monitor
      dockerfile: dockerfile
    ports:
      - "9100:9100"

deploy.sh

#!/bin/sh

# 使用说明,用来提示输入参数
usage() {
	echo "Usage: sh 执行脚本.sh [port|base|modules|modulesPlus|stop|rm]"
	exit 1
}

# 开启所需端口
port(){
	firewall-cmd --add-port=8000/tcp --permanent
	firewall-cmd --add-port=9000/tcp --permanent
	firewall-cmd --add-port=8848/tcp --permanent
	firewall-cmd --add-port=9848/tcp --permanent
	firewall-cmd --add-port=9849/tcp --permanent
	firewall-cmd --add-port=6379/tcp --permanent
	firewall-cmd --add-port=3306/tcp --permanent
	firewall-cmd --add-port=9100/tcp --permanent
	firewall-cmd --add-port=9200/tcp --permanent
	firewall-cmd --add-port=9201/tcp --permanent
	firewall-cmd --add-port=9202/tcp --permanent
	firewall-cmd --add-port=9203/tcp --permanent
	firewall-cmd --add-port=9300/tcp --permanent
	service firewalld restart
}

# 项目文件夹
BASE_DIR="/home/witbee-cloud"
# 项目包名
PACKAGE_NAME="witbee-cloud.tgz"

# 启动基础环境(必须)
base(){
  docker-compose up -d witbee-mysql witbee-redis witbee-nacos
}

# 启动程序模块(必须)
modules(){
  echo "删除原始文件"
  cd $BASE_DIR/docker
  rm -f ./witbee/gateway/jar/** ./witbee/auth/jar/** ./witbee/modules/system/jar/**
  echo "复制 gateway 模块"
  cp ../witbee-gateway/target/witbee-gateway.jar ./witbee/gateway/jar
  echo "复制 auth 模块"
  cp ../witbee-auth/target/witbee-auth.jar ./witbee/auth/jar
  echo "复制 system 模块"
  cp ../witbee-modules/witbee-system/target/witbee-modules-system.jar ./witbee/modules/system/jar
  echo "删除原始镜像"
  docker-compose stop witbee-gateway witbee-auth witbee-modules-system && docker-compose rm -f witbee-gateway witbee-auth witbee-modules-system
  echo "构建启动镜像"
  docker-compose up -d --build witbee-gateway witbee-auth witbee-modules-system
}

# 启动程序模块(非必须)
modulesPlus(){
  echo "删除原始文件"
  cd $BASE_DIR/docker
  rm -f ./witbee/modules/file/jar/** ./witbee/modules/gen/jar/** ./witbee/modules/job/jar/**
  echo "复制 file 模块"
  cp ../witbee-modules/witbee-file/target/witbee-modules-file.jar ./witbee/modules/file/jar
  echo "复制 gen 模块"
  cp ../witbee-modules/witbee-gen/target/witbee-modules-gen.jar ./witbee/modules/gen/jar
  echo "复制 job 模块"
  cp ../witbee-modules/witbee-job/target/witbee-modules-job.jar ./witbee/modules/job/jar
  echo "删除原始镜像"
  docker-compose stop witbee-modules-file witbee-modules-gen witbee-modules-job && docker-compose rm -f witbee-modules-file witbee-modules-gen witbee-modules-job
  echo "构建启动镜像"
  docker-compose up -d --build witbee-modules-file witbee-modules-gen witbee-modules-job
}

# 关闭所有环境/模块
stop(){
  docker-compose stop
}

# 删除所有环境/模块
rm(){
  docker-compose rm
}

# 根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
"port")
	port
;;
"base")
	base
;;
"modules")
	modules
;;
"modulesPlus")
	modulesPlus
;;
"stop")
	stop
;;
"rm")
	rm
;;
*)
	usage
;;
esac

由于使用 docker-compose 部署可能会产生多余的镜像,可以使用 docker image prune 命令清理。也可能产生许多没用的储存卷,使用 docker volume rm $(docker volume ls -qf dangling=true) 命令清理。以上就是阿里云云效流水线自动化部署 ruoyi-cloud 微服务架构全部内容了,欢迎讨论!

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ruoyi-cloud是一款基于Spring Cloud的微服务框架,提供了一系列方便快捷的开发工具和组件,可以帮助开发者快速构建和部署微服务架构的应用程序。 ruoyi-cloud微服务版本视频教程可以帮助开发者更好地理解和学习如何使用这个框架来开发微服务应用。视频教程通常从安装和配置开始,逐步介绍ruoyi-cloud的各个组件和功能,并且通过实际示例演示如何使用这些组件来实现特定的功能。 这些视频教程一般包括以下内容: 1. 系统环境准备:包括Java环境的安装和配置、IDE的选择与设置等。 2. ruoyi-cloud的概述:介绍ruoyi-cloud框架的基本概念、架构和特点。 3. 项目创建和配置:演示如何使用ruoyi-cloud的命令行工具或使用IDE来创建一个ruoyi-cloud微服务项目,并进行必要的配置。 4. 微服务注册与发现:介绍ruoyi-cloud的服务注册与发现组件,例如Eureka、Consul或Nacos,并展示如何在项目中进行配置与使用。 5. 微服务调用与负载均衡:讲解ruoyi-cloud的服务间调用和负载均衡机制,例如使用Feign或Ribbon来实现服务调用。 6. API网关与限流:介绍ruoyi-cloud的API网关组件,例如Spring Cloud Gateway或Zuul,并演示如何使用它们进行API的路由和限流。 7. 配置中心:讲解ruoyi-cloud的配置中心组件,例如Spring Cloud Config,展示如何使用它来集中管理应用程序的配置。 8. 服务监控与日志收集:介绍ruoyi-cloud的监控与日志收集工具,例如Spring Cloud Sleuth和Zipkin,演示如何使用它们来监控和追踪微服务的运行状态和性能。 9. 高可用部署与扩展:讲解如何使用ruoyi-cloud来实现微服务的高可用部署和扩展,例如使用Docker和Kubernetes等容器化技术。 通过学习ruoyi-cloud微服务版本的视频教程,开发者可以更好地了解和掌握ruoyi-cloud框架,从而能够更高地进行微服务的开发和部署

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值