游乐游手机版
首页/系统平台/文章详情

Rainbond部署时自动初始化数据库Schema的方法

时间:2026-08-21 15:36
我们使用容器的方式部署数据库组件,特别是企业有大量的项目开发业务的,部署的开发、测试数据库组件较多时。经常会遇到以下问题:业务需要使用数据库,但部署完数据库后,需要在数据库中执行创建schema的操作或者一些初始化数据的创建。开发测试多套部署环境,需要多次重复1的步骤。项目比较多,时间久了项目需要的

我们使用容器的方式部署数据库组件,特别是企业有大量的项目开发业务的,部署的开发、测试数据库组件较多时。经常会遇到以下问题:

  1. 业务需要使用数据库,但部署完数据库后,需要在数据库中执行创建schema的操作或者一些初始化数据的创建。
  2. 开发测试多套部署环境,需要多次重复1的步骤。
  3. 项目比较多,时间久了项目需要的数据库Schema不清楚。
  4. 项目交付时数据库Schema管理混乱。

现在如果是使用Go等语言研发的业务系统,都具备了ORM层自动初始化和更新Schema的能力,如果是这样本文对你无用。但目前大多数其他开发语言的业务都不具备这种能力。

如果我们把数据库也作为一个业务中的一个服务模块来管理的话,我们希望服务启动后即可直接完成Schema的初始化,直接提供数据服务能力。

那么在Rainbond中如何达成这样的效果呢?

Schema初始化在传统模式中一般有两种方案:

  • 在数据库启动后手动导入;人工通过客户端操作,没有自动化程度可言;
  • 在业务服务启动时连接数据库进行初始化,依赖业务服务端的能力。

可以看出,这两种方式都存在各自的弊端,那么有没有方式能够让数据库启动时自动初始化指定的数据呢?答案是 有!

我们以MySQL为例, 官方对于 Docker 有着良好的支持,首先来看 Dockerhub上 Mysql官方镜像 的一段描述:

首次启动数据库容器时,会创建一个指定名称的新数据库,并依据提供的环境变量进行初始化。此外,它还会执行位于 /docker-entrypoint-initdb.d 目录下扩展名为 .sh.sql.sql.gz 的文件,这些文件将按照字母顺序依次执行。默认情况下,SQL 文件会被导入到由 MYSQL_DATABASE 变量指定的数据库中。所以,我们只需在Mysql镜像工作机制的基础上,妥善维护数据库初始化所需的SQL文件即可。上文提到将数据库作为一个独立的服务模块,我们同样可以通过代码对Sql等脚本进行管理,并划分版本分支。

Rainbond 支持多种组件创建方式,在这里我们采用 从源码创建组件 的方式,编写 Dockerfile 并上传至支持 Git/Svn 协议的客户端,即可在平台直接进行构建;这种方式 透明、可复用、并且能够进行自动化构建。

目录结构

./
└── Dockerfile
└── config
├── my.cnf
├── conf.d
├── docker.cnf
└── sql
├── init_database
└── README.md

Dockerfile文件

#基础镜像
FROM mysql:latest
MAINTAINER Aaron

#把sql文件拷贝到/docker-entrypoint-initdb.d/目录下,以便启动时自动执行这个sql
COPY ./sql/*.sql /docker-entrypoint-initdb.d
#拷贝mysql配置文件
COPY ./config/ /etc/mysql/
#Mysql密码
ENV MYSQL_ROOT_PASSWORD rainbond
#数据持久化目录
VOLUME [ "/var/lib/mysql" ]
#端口
EXPOSE 3306

项目地址:https://github.com/Aaron-23/Initialize-db

使用该项目在平台进行构建,Rainbond 将会自动检测 Dockerfile 中定义的环境变量,存储,端口等信息,对这些配置项进行自动化配置,在 Dockerfile 构建完毕后自动启动数据库。

需要注意的是 MySQL 属于有状态服务,所以在构建前需将组件类型修改为有状态单实例,关于组件状态请参考 组件部署类型。

启动完成,进入运行中状态

通过 Web终端 进入数据库查看相关数据已经完成初始化

通过这种方式进行数据库初始化,不需要修改程序代码,无需借助外部工具,通过平台的能力快速部署数据库并完成初始化,在后续使用过程中可以通过性能分析,资源监控,实例伸缩等功能完成服务运行时的全生命周期管理,提升开发效率,增强业务稳定性。

另外我们还可以将此组件发布到 Rainbond 内部组件库中,后续开发、测试和交付过程可以直接一键安装此组件即可获得数据初始完成的数据库服务。

以上 MySQL数据库 仅为参考示例,MongoDB,PostgreSQL等数据库均支持同类型数据初始化方式。

Rainbond云原生应用管理平台,它基于Kubernetes,100%开源,能把复杂的容器编排和应用管理能力转化为简单好用的开发运维体验。不用深入学习Kubernetes底层知识,通过图形化界面和标准化流程,就能实现应用的全生命周期管理,适合企业快速搭建云原生应用平台,降低技术门槛和落地成本。它能让企业不用改代码就实现微服务架构,不用学容器就能管理Kubernetes,助力企业应用上云,一站式将任何企业应用持续交付到Kubernetes集群、混合云、多云等基础设施。它还是Rainstore云原生应用商店的支撑平台。

1. Rainbond 官网

2. Rainbond 安装使用

3. Rainbond 参考手册全集

来源:https://apiv1.oschina.net/oschinapi/blog/detail?id=4727145
上一篇鸿蒙应用开发常见问题汇总与实现方法案例解析 下一篇Kubernetes服务类型详解:核心概念与实践应用
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
VMware安装Ubuntu完整教程:创建虚拟机与启动验证
系统平台 · 2026-09-01

VMware安装Ubuntu完整教程:创建虚拟机与启动验证

本教程详细演示如何在VMware中创建Ubuntu虚拟机,涵盖ISO挂载、硬件配置、安装向导及启动验证。通过清晰的步骤与验证命令,帮助新手快速搭建可用的Linux学习环境。

Win10专业版U盘安装教程:制作启动盘与完整安装步骤
系统平台 · 2026-09-01

Win10专业版U盘安装教程:制作启动盘与完整安装步骤

本文提供Win10专业版U盘安装完整流程:准备8GB以上U盘与官方镜像,制作启动盘并核对盘符;通过F12 F11 Esc等快捷键或BIOS设置U盘为第一启动项;安装时选择专业版并谨慎分区;完成后在“设置—系统—关于”验证版本与激活状态。操作前务必备份数据。

Windows10系统字体太小怎么调大
系统平台 · 2026-08-27

Windows10系统字体太小怎么调大

Windows10系统字体太小怎么调大?只需两步:首先打开设置中的显示选项,将缩放比例调整为125%或150%;随后运行ClearType文本调谐器优化字体清晰度。此方法适用于高分屏及普通屏幕,无需修改注册表即可解决界面拥挤问题。

Win10磁盘占用100%基础排查:从监控到清理的完整步骤
系统平台 · 2026-08-27

Win10磁盘占用100%基础排查:从监控到清理的完整步骤

Windows 10系统出现磁盘占用100%会导致电脑卡顿、程序响应缓慢。本文提供基础排查方案:首先通过任务管理器确认是否为磁盘高负载,随后进入系统存储页面分析C盘占用类别,最后针对性清理临时文件。遵循此流程可有效缓解磁盘压力,避免盲目重装系统。

Windows10系统怎么显示此电脑和控制面板
系统平台 · 2026-08-27

Windows10系统怎么显示此电脑和控制面板

Windows10默认可能不显示桌面图标,导致找不到“此电脑”和“控制面板”。只需进入个性化设置,在“桌面图标设置”中勾选对应选项即可恢复。本文提供详细图文步骤,帮助快速找回系统入口。