51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

MySQL Docker 自动部署实战

之前记录过 MySQL 的基础知识,本文记录使用 Docker 自动部署、初始化表结构的操作流程 。

背景 {#背景}

在测试机器上配置好了一组 MySQL 环境,手工一条一条设计、配置、调整得到了几个数据表,希望可以将这些表结构、mysql 数据库很方便地移植到任意服务器上,于是有了本文记录的流程。

准备工作 {#准备工作}

环境配置 {#环境配置}

  • 操作系统:Ubuntu 22.04
  • 安装好 docker
  • 配置好 docker compose
  • 使用 MySQL docker 镜像 mysql 8.0.38

实现思路 {#实现思路}

  1. 将数据表导入 init.sql 文件
  2. 在构建 mysql 镜像时将 sql 文件塞入 /docker-entrypoint-initdb.d/ 目录下,mysql 会自动调用其中的 sql 文件完成初始化
  3. 将流程 2 用 dockerfile 的方式实现
  4. 将流程 3 与配置磁盘映射、端口映射、用户密码、时区统一等信息用docker compose 的方式实现
  5. 为了配合流程 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.ymlDockerfileinit.sqlmysql_deploy.sh 放到一个文件夹,执行:

>
> 文章链接: > / > >
>

赞(4)
未经允许不得转载:工具盒子 » MySQL Docker 自动部署实战