## Docker 容器化部署 ### 新增文件 - Dockerfile: 多阶段构建镜像,支持 Java 21 - docker-compose.yml: 完整服务编排配置 - 基础设施: MySQL 8.0, Redis 7, Nacos 3.0 - 监控: Prometheus, Grafana - 业务服务: Gateway + 9个微服务 - docker/.env: 环境变量配置 - docker/mysql/init/01-init.sql: 数据库初始化脚本 ### Docker 特性 - 多阶段构建优化镜像大小 - 非 root 用户运行服务 - 健康检查配置 - 统一时区设置 (Asia/Shanghai) ## Prometheus + Grafana 监控 ### Prometheus 配置 - docker/prometheus/prometheus.yml: 服务发现配置 - docker/prometheus/rules/alerts.yml: 告警规则 - 服务可用性告警 - JVM 内存告警 - HTTP 请求告警 - 数据库连接池告警 - 系统资源告警 ### Grafana 配置 - docker/grafana/provisioning/: 数据源和Dashboard自动导入 - docker/grafana/dashboards/fund-platform-dashboard.json - 服务概览面板 - JVM 内存监控 - 数据库连接池监控 ### Spring Boot Actuator 集成 - pom.xml: 添加 spring-boot-starter-actuator 和 micrometer-registry-prometheus - application-docker.yml: Prometheus 端点配置 ## 服务端口规划 - Gateway: 8000 - fund-sys: 8100 - fund-cust: 8200 - fund-proj: 8300 - fund-req: 8400 - fund-exp: 8500 - fund-receipt: 8600 - fund-report: 8700 - fund-file: 8800 - Prometheus: 9090 - Grafana: 3000 - Nacos: 8848
145 lines
5.9 KiB
SQL
145 lines
5.9 KiB
SQL
-- 资金服务平台 - MySQL 初始化脚本
|
||
-- 执行顺序: 01
|
||
|
||
-- 设置字符集
|
||
SET NAMES utf8mb4;
|
||
SET CHARACTER SET utf8mb4;
|
||
|
||
-- 创建 Nacos 配置数据库
|
||
CREATE DATABASE IF NOT EXISTS `nacos_config`
|
||
DEFAULT CHARACTER SET utf8mb4
|
||
COLLATE utf8mb4_unicode_ci;
|
||
|
||
-- 创建业务数据库
|
||
CREATE DATABASE IF NOT EXISTS `fund_platform`
|
||
DEFAULT CHARACTER SET utf8mb4
|
||
COLLATE utf8mb4_unicode_ci;
|
||
|
||
-- 授权(如果需要创建专用用户)
|
||
-- CREATE USER 'fund_user'@'%' IDENTIFIED BY 'fund123';
|
||
-- GRANT ALL PRIVILEGES ON fund_platform.* TO 'fund_user'@'%';
|
||
-- FLUSH PRIVILEGES;
|
||
|
||
USE `fund_platform`;
|
||
|
||
-- 用户表
|
||
CREATE TABLE IF NOT EXISTS `sys_user` (
|
||
`id` BIGINT NOT NULL COMMENT '用户ID',
|
||
`username` VARCHAR(50) NOT NULL COMMENT '用户名',
|
||
`password` VARCHAR(100) NOT NULL COMMENT '密码',
|
||
`real_name` VARCHAR(50) COMMENT '真实姓名',
|
||
`phone` VARCHAR(20) COMMENT '手机号',
|
||
`email` VARCHAR(100) COMMENT '邮箱',
|
||
`dept_id` BIGINT COMMENT '部门ID',
|
||
`tenant_id` BIGINT NOT NULL DEFAULT 1 COMMENT '租户ID',
|
||
`status` TINYINT DEFAULT 1 COMMENT '状态:0禁用 1启用',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
`deleted` TINYINT DEFAULT 0 COMMENT '是否删除',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_username` (`username`, `tenant_id`),
|
||
KEY `idx_tenant_id` (`tenant_id`),
|
||
KEY `idx_dept_id` (`dept_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
|
||
|
||
-- 角色表
|
||
CREATE TABLE IF NOT EXISTS `sys_role` (
|
||
`id` BIGINT NOT NULL COMMENT '角色ID',
|
||
`role_name` VARCHAR(50) NOT NULL COMMENT '角色名称',
|
||
`role_code` VARCHAR(50) NOT NULL COMMENT '角色编码',
|
||
`tenant_id` BIGINT NOT NULL DEFAULT 1 COMMENT '租户ID',
|
||
`status` TINYINT DEFAULT 1 COMMENT '状态',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
`deleted` TINYINT DEFAULT 0,
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_tenant_id` (`tenant_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色表';
|
||
|
||
-- 菜单表
|
||
CREATE TABLE IF NOT EXISTS `sys_menu` (
|
||
`id` BIGINT NOT NULL COMMENT '菜单ID',
|
||
`parent_id` BIGINT DEFAULT 0 COMMENT '父菜单ID',
|
||
`menu_name` VARCHAR(50) NOT NULL COMMENT '菜单名称',
|
||
`menu_type` TINYINT DEFAULT 1 COMMENT '类型:1目录 2菜单 3按钮',
|
||
`path` VARCHAR(200) COMMENT '路由路径',
|
||
`component` VARCHAR(200) COMMENT '组件路径',
|
||
`perms` VARCHAR(100) COMMENT '权限标识',
|
||
`sort` INT DEFAULT 0 COMMENT '排序',
|
||
`icon` VARCHAR(100) COMMENT '图标',
|
||
`status` TINYINT DEFAULT 1 COMMENT '状态',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
`deleted` TINYINT DEFAULT 0,
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_parent_id` (`parent_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='菜单表';
|
||
|
||
-- 用户角色关联表
|
||
CREATE TABLE IF NOT EXISTS `sys_user_role` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT,
|
||
`user_id` BIGINT NOT NULL,
|
||
`role_id` BIGINT NOT NULL,
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_user_role` (`user_id`, `role_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户角色关联表';
|
||
|
||
-- 角色菜单关联表
|
||
CREATE TABLE IF NOT EXISTS `sys_role_menu` (
|
||
`id` BIGINT NOT NULL AUTO_INCREMENT,
|
||
`role_id` BIGINT NOT NULL,
|
||
`menu_id` BIGINT NOT NULL,
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_role_menu` (`role_id`, `menu_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色菜单关联表';
|
||
|
||
-- 部门表
|
||
CREATE TABLE IF NOT EXISTS `sys_dept` (
|
||
`id` BIGINT NOT NULL COMMENT '部门ID',
|
||
`parent_id` BIGINT DEFAULT 0 COMMENT '父部门ID',
|
||
`dept_name` VARCHAR(50) NOT NULL COMMENT '部门名称',
|
||
`tenant_id` BIGINT NOT NULL DEFAULT 1 COMMENT '租户ID',
|
||
`sort` INT DEFAULT 0,
|
||
`status` TINYINT DEFAULT 1,
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
`deleted` TINYINT DEFAULT 0,
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_tenant_id` (`tenant_id`),
|
||
KEY `idx_parent_id` (`parent_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='部门表';
|
||
|
||
-- 租户表
|
||
CREATE TABLE IF NOT EXISTS `sys_tenant` (
|
||
`id` BIGINT NOT NULL COMMENT '租户ID',
|
||
`tenant_name` VARCHAR(100) NOT NULL COMMENT '租户名称',
|
||
`tenant_code` VARCHAR(50) NOT NULL COMMENT '租户编码',
|
||
`contact_name` VARCHAR(50) COMMENT '联系人',
|
||
`contact_phone` VARCHAR(20) COMMENT '联系电话',
|
||
`status` TINYINT DEFAULT 1 COMMENT '状态',
|
||
`expire_time` DATETIME COMMENT '过期时间',
|
||
`create_time` DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||
`update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||
`deleted` TINYINT DEFAULT 0,
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_tenant_code` (`tenant_code`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='租户表';
|
||
|
||
-- 插入默认租户
|
||
INSERT INTO `sys_tenant` (`id`, `tenant_name`, `tenant_code`, `contact_name`, `status`)
|
||
VALUES (1, '默认租户', 'DEFAULT', '系统管理员', 1) ON DUPLICATE KEY UPDATE `tenant_name` = VALUES(`tenant_name`);
|
||
|
||
-- 插入默认管理员用户 (密码: admin123,使用 BCrypt 加密)
|
||
INSERT INTO `sys_user` (`id`, `username`, `password`, `real_name`, `tenant_id`, `status`)
|
||
VALUES (1, 'admin', '$2a$10$N.zmdr9k7uOCQb376NoUnuTJ8iAt6Z5EHsM8lE9lBOsl7iAt6Z5EH', '系统管理员', 1, 1)
|
||
ON DUPLICATE KEY UPDATE `real_name` = VALUES(`real_name`);
|
||
|
||
-- 插入默认角色
|
||
INSERT INTO `sys_role` (`id`, `role_name`, `role_code`, `tenant_id`)
|
||
VALUES (1, '管理员', 'ADMIN', 1), (2, '普通用户', 'USER', 1)
|
||
ON DUPLICATE KEY UPDATE `role_name` = VALUES(`role_name`);
|
||
|
||
-- 分配管理员角色
|
||
INSERT INTO `sys_user_role` (`user_id`, `role_id`) VALUES (1, 1)
|
||
ON DUPLICATE KEY UPDATE `role_id` = VALUES(`role_id`);
|