之前记录过 MySQL 的基础知识,本文记录使用 Docker 自动部署、初始化表结构的操作流程 。
背景 {#背景}
在测试机器上配置好了一组 MySQL 环境,手工一条一条设计、配置、调整得到了几个数据表,希望可以将这些表结构、mysql 数据库很方便地移植到任意服务器上,于是有了本文记录的流程。
准备工作 {#准备工作}
环境配置 {#环境配置}
- 操作系统:Ubuntu 22.04
- 安装好 docker
- 配置好 docker compose
- 使用 MySQL docker 镜像 mysql 8.0.38
实现思路 {#实现思路}
- 将数据表导入
init.sql
文件 - 在构建 mysql 镜像时将 sql 文件塞入
/docker-entrypoint-initdb.d/
目录下,mysql 会自动调用其中的 sql 文件完成初始化 - 将流程 2 用 dockerfile 的方式实现
- 将流程 3 与配置磁盘映射、端口映射、用户密码、时区统一等信息用docker compose 的方式实现
- 为了配合流程 4 的时区、磁盘映射等功能,将辅助工作与流程 4 用 shell 脚本的方式实现
graph LR
subgraph shell
subgraph docker-compose
subgraph Dockerfile
A(数据表信息)
B(init.sql)
A--导出-->B
end
I(构建镜像)
C(配置数据库密码)
D(配置数据库端口)
E(配置磁盘映射)
F(配置时区)
end
G(时区文件配置)
H(创建数据库映射文件夹)
J(创建容器)
end
</code>
</pre>
>
> 最终达到运行一个shell 脚本万事大吉的效果
>
>
>
### init.sql 文件生成 {#init-sql-文件生成}
执行命令:
* 单个数据库:
<!-- -->
* 所有数据库:
形如:
过程中可以添加用户信息:
注意:
在用 dockerfile 构建镜像时会将临时结果保存在 docker images 里,如果更新了 init.sql 需要删除对应的 docker 镜像,不然默认还是会用之前镜像中的内容。
### Dockerfile {#Dockerfile}
### docker-compose.yml {#docker-compose-yml}
### shell {#shell}
### 使用方法 {#使用方法}
将 ` docker-compose.yml ` 、 ` Dockerfile ` 、 ` init.sql ` 、 ` mysql_deploy.sh ` 放到一个文件夹,执行:
>
> 文章链接:
> /
>
>
>