Spring-Cloud 微服务 Docker 部署
1-介绍
基于SpringBoot | Spring Cloud & Alibaba | Mybatis-Plus | Vue3 | vite2 | TypeScript | Ant-Design-Vue UI的多租户SaaS开发框架
2-特性
-
多重隔离控制:物理隔离&&逻辑隔离,共享多租户&&隔离多租户
-
动态多源策略:动态源增减&&租户动态识别源
-
租户控制优化:通用数据&&混合租户&&独立租户多种租户模式,自动拦截,开发无感知
-
权限控制优化:部门&&岗位&&用户多级可控,自动拦截,开发无感知
-
租户可配菜单:多种混合模式控制租户菜单
-
组织管理优化:更完善的组织架构操作与管理逻辑
-
微聚合多前端:公共抽离,降低系统重复冗余
3-系统需求
需求 | 版本 |
---|---|
JDK | >=17 |
Mysql | >=8.0+ |
Redis | >=3.0 |
Maven | >=3.0 |
Node | >=16 |
nacos | >=2.0.0 |
sentinel | >=1.6.0 |
4-项目打包
4.1-后端打包
4.1.1-执行打包脚本
打包时建议通过idea | Eclipse的Maven进行打包,package.bat偶尔会出现莫名bug 不同模块版本会生成在xueyi/xueyi-xxxx模块下target文件夹
@echo off
echo.
echo [信息] 打包Web工程,生成war/jar包文件。
echo.
%~d0
cd %~dp0
cd ..
call mvn clean package -Dmaven.test.skip=true
pause
4.2-前端打包
4.2.1-执行打包脚本
构建打包成功之后,会在对应模块的根目录生成 dist 文件夹,里面就是构建打包好的文件,通常是 ***.js 、***.css、index.html 等静态文件。
@echo off
echo.
echo [信息] 打包Web工程,生成dist文件。
echo.
%~d0
cd %~dp0
cd ..
npm run build:prod
pause
5-项目部署
5.1-执行复制脚本
#!/bin/sh
# 复制项目的文件到对应docker路径,便于一键生成镜像。
usage() {
echo "Usage: sh copy.sh"
exit 1
}
# copy sql
echo "begin copy sql "
cp ../sql/quartz.sql ./mysql/db
cp ../sql/xueyi_1.sql ./mysql/db
cp ../sql/xueyi_2.sql ./mysql/db
cp ../sql/xy_config.sql ./mysql/db
# copy html
echo "begin copy html "
cp -r ../xueyi-ui/main/dist/** ./nginx/html/main
cp -r ../xueyi-ui/administrator/dist/** ./nginx/html/administrator
# copy jar
echo "begin copy xueyi-gateway "
cp ../xueyi-gateway/target/xueyi-gateway.jar ./xueyi/gateway/jar
echo "begin copy xueyi-auth "
cp ../xueyi-auth/target/xueyi-auth.jar ./xueyi/auth/jar
echo "begin copy xueyi-visual "
cp ../xueyi-visual/xueyi-monitor/target/xueyi-visual-monitor.jar ./xueyi/visual/monitor/jar
echo "begin copy xueyi-modules-system "
cp ../xueyi-modules/xueyi-system/target/xueyi-modules-system.jar ./xueyi/modules/system/jar
echo "begin copy xueyi-modules-tenant "
cp ../xueyi-modules/xueyi-tenant/target/xueyi-modules-tenant.jar ./xueyi/modules/tenant/jar
echo "begin copy xueyi-modules-file "
cp ../xueyi-modules/xueyi-file/target/xueyi-modules-file.jar ./xueyi/modules/file/jar
echo "begin copy xueyi-modules-job "
cp ../xueyi-modules/xueyi-job/target/xueyi-modules-job.jar ./xueyi/modules/job/jar
echo "begin copy xueyi-modules-gen "
cp ../xueyi-modules/xueyi-gen/target/xueyi-modules-gen.jar ./xueyi/modules/gen/jar
echo "begin copy xueyi-modules-sample "
cp ../xueyi-modules/xueyi-sample/target/xueyi-modules-sample.jar ./xueyi/modules/sample/jar
echo "begin copy xueyi-modules-sms "
cp ../xueyi-modules/xueyi-sms/target/xueyi-modules-sms.jar ./xueyi/modules/sms/jar
5.2-编写配置文件
docker-compose.yml
Docker Compose 使用的一个步骤为:
使用 Dockerfile 文件定义应用程序的环境
使用 docker-compose.yml 文件定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
执行 docker-compose up 命今来创建并启动所有服务。
三者关系:
deploy.sh -> docker-compose.yml -> Dockerfile
5.2.1-docker-compose.yml
version : '3.8'
services:
xueyi-nacos:
container_name: xueyi-nacos
image: nacos/nacos-server
build:
context: nacos
environment:
- MODE=standalone
volumes:
- ./docker/nacos/logs/:/home/nacos/logs
- ./docker/nacos/conf/application.properties:/home/nacos/conf/application.properties
ports:
- "8848:8848"
- "9848:9848"
- "9849:9849"
# depends_on:
# - xueyi-mysql
# links:
# - xueyi-mysql
# xueyi-mysql:
# container_name: xueyi-mysql
# image: mysql:8.0.26
# build:
# context: sql
# dockerfile: Dockerfile
# ports:
# - "3306:3306"
# volumes:
# - ./docker/mysql/conf:/etc/mysql/co