docker:mysql启动时自动执行初始建表脚本

原创 2018年01月12日 18:04:50

默认情况下,mysql镜像创建的docker容器启动时只是一个空的数据库实例,为了简化docker部署,我们需要
在docker创建mysql容器的时,数据库和表已经自动建好,初始化数据也已自动录入,也就是说容器启动后数据库就可用了。这就需要容器启动时能自动执行sql脚本。
在mysql官方镜像中提供了容器启动时自动执行/docker-entrypoint-initdb.d文件夹下的脚本的功能(包括shell脚本和sql脚本)
docker-entrypoint.sh中下面这段代码就是干这事儿的

        for f in /docker-entrypoint-initdb.d/*; do
            case "$f" in
                *.sh)     echo "$0: running $f"; . "$f" ;;
                *.sql)    echo "$0: running $f"; "${mysql[@]}" < "$f"; echo ;;
                *.sql.gz) echo "$0: running $f"; gunzip -c "$f" | "${mysql[@]}"; echo ;;
                *)        echo "$0: ignoring $f" ;;
            esac
            echo
        done

也就是说只要把你自己的初始化脚本放到/docker-entrypoint-initdb.d/文件夹下就齐活了。

于是可以做这样一个简单的Dockerfile来实例我们的需求,其实关键的代码就是最后一行了。

Dockerfile

# docker image of facelog mysql
# version 1.0.0
# author guyadong
FROM mysql:5.6
MAINTAINER guyadong(10km0811@sohu.com)
# 复制数据库初始化脚本create_table.sql到/docker-entrypoint-initdb.d文件夹下
COPY sql/create_table.sql /docker-entrypoint-initdb.d

参考资料

mysql 5.6 entrypoint 脚本 https://github.com/docker-library/mysql/blob/master/5.6/docker-entrypoint.sh
mysql 5.6 镜像脚本 https://github.com/docker-library/mysql/blob/master/5.6/Dockerfile

版权声明:本文为博主原创文章,转载请注明源地址。

让docker中的mysql启动时自动执行sql

在用docker创建mysql容器的时,有时候我们期望容器启动后数据库和表已经自动建好,初始化数据也已自动录入,也就是说容器启动后我们就能直接连上容器中的数据库,使用其中的数据了。 其实mysql的...
  • boling_cavalry
  • boling_cavalry
  • 2017年05月01日 12:07
  • 5226

容器创建后,随意更改容器内启动脚本

自己创建一个可以随时修改容器内启动应用脚本的镜像。
  • artemus717
  • artemus717
  • 2015年06月02日 00:46
  • 1742

Docker学习笔记(3)-- 如何使用Dockerfile构建镜像

原文地址:http://blog.csdn.net/we_shell/article/details/38445979 Dockfile是一种被Docker程序解释的脚本,Dockerf...
  • qinyushuang
  • qinyushuang
  • 2015年01月31日 17:48
  • 130137

docker搭建showdoc

在Docker中部署ShowDoc一、安装Docker1、安装Dockeryum install docker2、启动服务# service docker start3、设置为开机启动# chkcon...
  • zhangminemail
  • zhangminemail
  • 2018年01月19日 15:55
  • 11

灵活控制Docker容器中启动的进程

通过将本机目录映射到容器内部,设定容器每次启动时扫描本机映射进的目录中的脚本,启动指定的应用。...
  • artemus717
  • artemus717
  • 2015年06月08日 13:45
  • 3977

MySQL 库 和 样例表 创建脚本

1.小表 CREATE TABLE emp (empno smallint(4) not null,  ename varchar(10),  job varchar(9),  mgr smallin...
  • John_Chang11
  • John_Chang11
  • 2016年06月15日 13:19
  • 1378

如何构建Memcached Docker容器

本文详解如何构建Memcached Docker容器!
  • sisiy2015
  • sisiy2015
  • 2015年12月02日 13:58
  • 1632

如何卸载重装docker?

如何卸载重装docker?
  • yangzhenping
  • yangzhenping
  • 2015年02月09日 16:08
  • 36144

mysql新建表修改表sql脚本

新建表语句: -- ----------------------------------------------- -- 全量脚本 -- -------------------------------...
  • u010343544
  • u010343544
  • 2017年01月12日 14:21
  • 303

Linux(docker)中 mysql 表名大小写区分

问题: 在docker中使用mysql,通过sql文件导入数据库的时候,创建的表名都是大写字母,而程序中都是用的小写,碰到了下面这种错误:mysql> select * from task_sche...
  • daocaoren92wq
  • daocaoren92wq
  • 2017年03月30日 15:47
  • 1663
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:docker:mysql启动时自动执行初始建表脚本
举报原因:
原因补充:

(最多只允许输入30个字)