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.yml ` 、 ` Dockerfile ` 、 ` init.sql ` 、 ` mysql_deploy.sh ` 放到一个文件夹,执行:
 
 

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

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