docker制作mysql5.7的镜像难点在于,当mysql安装完成后需要手工初始化。我在其他博客查了下做法大多是用脚本初始化配置启动,但这种模式做出来的父进程不是mysql,是以/bin/bash启动mysql在后台运行。

      我的配置思路是先配置一个初始化好的镜像文件,再以此镜像文件做Dockerfile制作mysql镜像。

      第一步先用centos:7容器里安装mysql5.7,我是先在原机上做好网络yum和自定义yum仓库,将官撒网下载的mysql-community-*.rpm文件放在自定义yum仓库,供容器安装mysql,减少容器大小。

第二,安装完mysql之后,需要查看是否有mysql用户和组,没有就建一个。然后开始准备初始化,初始化要注意mysql5.7的配置文件/etc/my.cnf(最优先读取的配置文件路径)内容没有basedir的安装程序路径,所以要在初始化时指定地址官方推荐为/usr/local/mysql,没有就建一个,然后cd /etc/local/mysql  指令 mysql --initialize --user=mysql --basedir=/usr/local/mysql 开始初始化配置。

第三,初始化完成后,使用mysqld --daemonize --user=mysql指令 让mysql在后台运行,查看进程树和端口号,进程树有时显示有时不显示,但是只要3306的端口号出来在就说明mysql运行正常。yum清空缓存,退出容器。用docker commit制作镜像。

第四步,就是编写Dockerfile如下图,只需要注意CMD起动命令不要有--daemonize守护进程模块容器需要它前台运行。

第五步,用制作好的mysql镜像执着容器,docker run -itd记住用后台运行容器不然卡住,不过不会影响运行,进入容器查看下进程树和端口如下图。整个制作过程完成。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐