docker 创建默认数据库mysql容器,mysql容器自带初始化数据

本文介绍了如何使用Dockerfile创建包含预初始化数据库的MySQL镜像,以及如何从已有MySQL容器制作镜像。Dockerfile方法通过执行SQL文件在构建过程中初始化数据库,而容器转镜像则需手动迁移数据并修改配置文件,确保数据被包含在新镜像中。这两种方法适用于快速部署带有特定数据库的MySQL实例。
摘要由CSDN通过智能技术生成

目前我所使用的两种方式:
通过dockerfile创建镜像和容器转镜像
dockerfile创建镜像:

FROM mysql:5.6.47 as builder
RUN ["sed", "-i", "s/exec \"$@\"/echo \"not running $@\"/", "/usr/local/bin/docker-entrypoint.sh"]
ENV MYSQL_ROOT_PASSWORD=root
ENV MYSQL_DATABASE=root
# .sql文件可替换成对应库的SQL文件,文件路径可使用相对路径和绝对路径
COPY mysql.sql  /docker-entrypoint-initdb.d/
COPY ./mycustom.cnf /etc/mysql/conf.d/custom.cnf
RUN ["/usr/local/bin/docker-entrypoint.sh", "mysqld", "--datadir", "/initialized-db"]
FROM mysql:5.6.47
COPY --from=builder /initialized-db /var/lib/mysql

dockerfile 初始化流程大致是先创mysql原始容器,在执行对应的sql文件创建数据库,而容器制作的镜像它在创建容器后就已经带有数据库了不需要再执行sql文件,当sql文件有几百M甚至G的时候容器镜像创建会特别快

容器转镜像:

通过已有的mysql容器制作镜像 因为mysql容器制作镜像时默认配置是不会把已有的数据也打包进镜像,所以如果只是单纯的容器转镜像,制作的镜像再转容器是不会带有数据的,可以参考以下方法:
整体逻辑就是自己创建的数据文件在另一个地方,打包的时候mysql配置文件 datadir 路径指向的是默认地址,所以只要把datadir 路径改成你自己数据库存放的路径就可以了。

1、在修改mysql容器 中的 新建目录 mdkir /workdir 这个地址可以随意。
2、 将 /var/lib/mysql 这个文件就存放着数据库文件 把这个复制 到新建目录中。
3、 修改 /etc/mysql/my.cnf 这个配置文件根据mysql不同可能会有所区别,主要就是找到一个有 “datadir =”配置的文件,将原来指向的地址改成你新建的地址
datadir = /workdir/mysql
因为 docker容器可能不存在vi或vim命令可以使用像sed命名等可以修改文件的命令
假如用sed命令注意路径转义 “/”
4、修改后退出 重启 容器就生效。
最后在执行 docker 容器转镜像命令
docker commit 容器id 镜像名:版本

结束

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值