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

版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net/10km/article/details/79046864

在xmlspy中使用java的xslt转换

在xmlspy中使用java的xslt转换.我喜欢在xmlspy中来写xml, xsl, xsd, 并且用xmlspy自带的xslt工具或者利用msxml来查看xslt转换结果. 在实际使用中发现尽管...
  • steeven
  • steeven
  • 2003-01-02 09:15:00
  • 2383

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

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

Docker容器内应用服务自启动

Docker容器内应用服务自启动如果想把Docker容器内的应用服务随着容器开启时自启动。只需要将服务启动的脚本写在Dockerfile里,然后用Dockerfile重构镜像即可实现: 编写应用服务自...
  • blog_liuliang
  • blog_liuliang
  • 2016-09-07 14:40:24
  • 12971

docker之使用docker创建mysql数据库

由于要学习python,用到了mysql,所以用docker来简单创建一个mysql数据库1、打开docker镜像站:https://dashboard.daocloud.io/,“发现镜像”中搜索m...
  • xuemeilu
  • xuemeilu
  • 2017-12-05 23:17:21
  • 787

Docker容器自启动

容器restart policy,即docker run启动容器时使用的--restart标志
  • wennuanddianbo
  • wennuanddianbo
  • 2017-08-26 08:35:06
  • 6099

docker的一些启动的脚本命令

docker的简单启动脚本命令
  • qq1300375795
  • qq1300375795
  • 2017-12-22 14:14:07
  • 144

docker中mysql初始化及启动失败解决办法

docker中mysql初始化及启动失败解决办法
  • rznice
  • rznice
  • 2016-10-14 13:21:16
  • 4575

设置Docker自动启动的方法

设置Docker自动启动的方法
  • lin521lh
  • lin521lh
  • 2017-10-20 11:14:57
  • 513

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

默认情况下,mysql镜像创建的docker容器启动时只是一个空的数据库实例,为了简化docker部署,我们需要 在docker创建mysql容器的时,数据库和表已经自动建好,初始化数据也已自动录入...
  • 10km
  • 10km
  • 2018-01-12 18:04:50
  • 575

Docker Container开机自动启动

重启策略: 使用在Docker run的时候使用--restart参数来设置。 no - container不重启 on-failure - container推出状态非0时重启 ...
  • Sloudy
  • Sloudy
  • 2015-03-15 23:29:05
  • 32070
收藏助手
不良信息举报
您举报文章:docker:mysql启动时自动执行初始建表脚本
举报原因:
原因补充:

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