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

默认情况下,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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值