首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >将数据的初始化放到docker中的整个工作过程(问题记录)

将数据的初始化放到docker中的整个工作过程(问题记录)

作者头像
程序员十三
发布2018-03-15 14:47:52
1.2K0
发布2018-03-15 14:47:52
举报
文章被收录于专栏:程序员有故事程序员有故事

由于是打算作为个人博客,所以对于install这个步骤,我从一开始就打算删掉的,前面一个多星期一直在修bug,到前天才开始做这个事情. 过程中也是碰到了各种问题,花了整整三天时间才完整的解决并实现了这个过程.

1.首先是思路的整理,如何去实现install过程的docker化.

由于原来是直接用的mysql5.7官方镜像,所以mysql数据的导入就不好实现,因此需要在原官方镜像的基础上重新创建镜像

实现方法及所需文件都在在mysql文件夹下.

2.数据导入与mysql权限问题.

设想是通过shell脚本来实现数据导入工作,用了好几种方法都无法绕过mysql的认证步骤.

通过shell脚本对mysql进行操作时是无法实现输入密码,因此用了最不安全的方法,在启动mysql镜像时通过免密方式.

通过这种方式实现了数据导入.

3.mysql容器启动问题.

由于是新建的Dockerfile,这一个问题也花费了大量时间,在容器启动时一直报mysql未启动的错误

因此setup脚本大概重写了十多个版本,最终将此问题解决(详见mysql/setup.sh文件)

4.设置mysql的root用户密码

由于需要实现数据导入,因此mysql权限设置为免密方式,但是这种方式不安全,因此想要解决掉此问题,重新设置root用户密码.

这一过程就不细讲了,尝试了各种方法,最终没有实现,由于浪费时间过多,因此放弃这一方案.(也许可以实现,但不想再去尝试了)

5.针对免密方式的补充

由于花费了太多时间在root用户的设置上,但是最终无法实现,因此选择了另外一种方案.

用户问题的方案是,新增tale数据库的管理用户并授权.(详见mysql/editpassword.sql文件)

安全问题是修改了docker-compose文件,不再将mysql容器端口暴露在宿主机中(平常测试时最好还是暴露端口,上线时删除即可).

6.mysql远程登录问题

其实改到第5步的时候,感觉功能已经差不多完成了,在联合启动时,又报了数据源无法连接的问题,原因就是容器中mysql未开启远程连接.

再次修改启动脚本.

7.blog容器无法连接连接mysql容器

本以为第6步中已经将连接问题解决,但是启动blog时还是报了同样的错误,通过本地客户端进行连接是正常的,证明了远程连接是没问题的.多次重复这一过程,发现还是无法连接.修改了各种参数,也进入到blog容器中查看host文件是否正常,都没有发现问题,也就是说配置都是正常的,但是每次报错都是同样的错,最后发现问题的原因出在初始化的时间差上,blog容器启动依赖mysql容器,mysql容器启动成功之后,才会执行blog容器启动,这一过程并没有问题,问题在mysql容器中还有一步初始化过程,可参考setup.sh脚本,这一过程需要时间,如果blog容器在这个过程中启动的话,由于权限问题还没有处理完成,因此无法连接mysql容器.因此修改了blog镜像的Dockerfile文件,并重写启动方法,将启动过程延迟执行,最终解决了这个问题(详见docker/startup.sh文件).

8.总结

问题解决了固然开心,但是也不能忘记了处理问题的过程带给自己的成长.当然,过程中也有一些非技术的失误,比如目录设置错误,镜像选择问题, 这些都是粗心导致的,过程中也花费了大量的时间,因为网上关于docker的资料实在有些少,只能自己去鼓捣,所以也是很心累,焦躁和烦闷导致了各种粗心,以后需注意.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档